2012-11-26 51 views
0

我在TextBox1.GotFocus事件函數的第一行有一個斷點。爲什麼在調用SetFocus時不運行GotFocus?

當我在其他地方撥打TextBox1.SetFocus時,GotFocus斷點從未被擊中。爲什麼?

代碼中調用函數:Text1.SetFocus

Private Sub Text1_GotFocus() 

    // code here 

End Sub 
+0

也許你的文本框已經有了焦點? (你可以發佈gotfocus事件的代碼和setfocus被調用的地方,也可以嘗試在setfocus調用上設置一個斷點以查看它是否被實際調用) – Hrqls

+0

參見編輯。我已經瀏覽了代碼,看到setfocus調用正在進行。它直接前進到下一行,而不進入焦點。 – CJ7

+0

你確定text1還沒有重點?嘗試將焦點設置爲其他內容之前,將它設置爲text1 – Hrqls

回答

0

一個小程序,以顯示我的意思。

運行程序,並單擊窗體(標題保持爲1),點擊文本2給它的焦點,並再次單擊格式(標題變爲2)

然後做而Text2.SetFocus相同在Form_Click

這裏被註釋掉的代碼是:

'1 form with 
' textbox : name=Text1 tabindex=0 
' textbox : name=Text2 tabindex=1 
Option Explicit 

Private Sub Form_Click() 
    'uncomment the following line to make it work 
' Text2.SetFocus 
    'with just the following call this wont work 
    Text1.SetFocus 
End Sub 

Private Sub Text1_GotFocus() 
    'increase the number in the form caption to show text1 got the focus again 
    Caption = CStr(Val(Caption) + 1) 
End Sub 
程序啓動文本1獲得焦點(tabindex屬性= 0)時

,所以窗體標題更改爲1 當您單擊的形式沒有任何變化,因爲Text1已經是h作爲焦點和ddn't「得到」它 當您第一次單擊Text2,然後單擊窗體的形式標題增加

通過取消註釋與Text2.SetFocus的行您讓程序始終將焦點移動到Text2(如果它不在那裏),在將焦點移至Text1之前,Text1將始終「重新獲得」焦點

但要小心!因爲首先將重點放在另一個控制上可能會產生一些你可能不想要的新事件!

相關問題