0

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 意味着焦点事件不会以相同的顺序触发。任何帮助获得我想要的结果,甚至如何调试都将不胜感激。

4

1 回答 1

0

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

将 Debug.Write 语句放在大多数选项卡事件的开头和结尾会更简单,但是如果您对这里感兴趣的是一种简单的方法来完成整个应用程序:面向方面的编程方法边界事件

我的猜测是,您的缩减复制项目没有在 TabPage1_Enter 之后触发的事件,正如您的实际项目所做的那样,并且以某种方式将焦点从文本框移开...... Debug.Write 输出将显示。高温高压

于 2011-08-22T07:03:08.257 回答