2011-08-22 108 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