VB.NET Windows Forms Project,VS2010。
我有一个带有几个标签页的tabcontrol,每个标签页上都有一个文本框。我希望在选择选项卡时,焦点(和插入点)将转到文本框中文本的末尾。如果我在每个选项卡中使用以下代码创建一个垃圾项目,它可以正常工作:
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意味着焦点事件不会以相同的顺序触发。对于获得我想要的结果,甚至是如何调试的任何帮助都将非常感激。
答案 0 :(得分:0)
使用System.Diagnostics.Debug.Write(“FunctionName:xyz,ActiveControl selected:”& Me.ActiveControl)打印出事件的顺序,这样您就知道调用堆栈顺序以及哪个事件会将焦点丢失。这还可以帮助您在IDE中进行调试时重现事件序列。
将Debug.Write语句放在大多数Tab事件的开头和结尾会更简单,但如果您感兴趣的是一个简单的方法来完成整个应用程序:Aspect Oriented Programming Method Boundary events
我的猜测是你的cut-down repro项目没有在TabPage1_Enter之后触发的事件,就像你的实际项目一样,并且以某种方式将焦点从文本框中移开......这是Debug.Write输出将会呈现。 HTH