【问题标题】:Winforms Textbox focus with TabControl使用 TabControl Winforms 文本框焦点
【发布时间】:2011-10-31 21:15:07
【问题描述】:

VB.NET Windows 窗体项目,VS2010。

我有一个带有多个标签页的标签控件,每个标签页上都有一个文本框。 I want the focus (and insertion point) to go to the end of the text in the textbox when the tab is selected.如果我在每个选项卡中使用以下代码创建一个垃圾项目,它可以正常工作:

Private Sub TabPage1_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TabPage1.Enter
  With TextBox1
    .SelectionStart = .Text.Length
    .Select()
  End With
End Sub

但是,相同的代码在我的实际项目中不起作用。我在调试时遇到了麻烦,因为如果我单步执行,断点和 IDE 意味着焦点事件不会以相同的顺序触发。任何帮助获得我想要的结果,甚至如何调试都将不胜感激。

【问题讨论】:

    标签: .net vb.net winforms vb.net-2010


    【解决方案1】:

    使用 System.Diagnostics.Debug.Write("FunctionName: xyz, ActiveControl selected:" & Me.ActiveControl) 打印出事件的顺序,以便您知道调用堆栈顺序以及哪个事件将焦点转移。这也将帮助您在 IDE 中进行调试时重现事件序列。

    将 Debug.Write 语句放在大多数选项卡事件的开头和结尾会更简单,但如果您感兴趣的话,这里有一个简单的方法来完成您的整个应用程序:Aspect Oriented Programming Method Boundary events

    我的猜测是,您的缩减复制项目没有在 TabPage1_Enter 之后触发的事件,而您的实际项目确实如此,并且以某种方式将焦点从文本框移开...... Debug.Write 输出将会呈现。高温

    【讨论】:

    • 你的意思是把那行代码放在每个事件处理程序中?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    • 2020-03-18
    相关资源
    最近更新 更多