2011-08-22 58 views
0

VB.NET Windows窗体项目,VS2010。WinForms TextBox焦点与TabControl

我有一个tabcontrol与多个tabpages和每个tabpage上有一个文本框。我希望焦点(和插入点)在选择该选项卡时进入文本框中文本的末尾。如果让我在每个选项卡下面的代码毫无价值的项目,它工作正常:

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

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

这将是简单的把Debug.Write语句在大部分的标签事件的开始和结束,但如果你有兴趣在这里是一个简单的方法做你的整个应用程序:Aspect Oriented Programming Method Boundary events

我的猜测是,你的削减repro项目没有在TabPage1_Enter之后触发的事件,在那里你的实际项目会做,并以某种方式从焦点远离文本框...... Debug.Write输出将显示。 HTH

+0

你的意思是把这行代码放在每个事件处理程序中吗? – SSS