使用TabControl Winforms Textbox焦点

时间:2011-08-22 05:09:32

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

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

1 个答案:

答案 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