我在TextBox1.GotFocus
事件函数的第一行有一个断点。
当我在其他地方调用TextBox1.SetFocus
时,GotFocus
断点永远不会被击中。为什么呢?
调用函数中的代码:Text1.SetFocus
Private Sub Text1_GotFocus()
// code here
End Sub
答案 0 :(得分:0)
一个显示我的意思的小程序。
运行程序并单击表单(标题保持为1),单击Text2为其提供焦点,然后再次单击表单(标题更改为2)
然后在Form_Click
中取消注释Text2.SetFocus时执行相同的操作这是代码:
'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
程序启动时Text1获得焦点(tabindex = 0),因此表单标题更改为1 单击表单时没有任何更改,因为Text1已经具有焦点并且dd不“得到”它 当您第一次单击Text2然后单击表单时,表单标题会增加
通过取消对Text2.SetFocus的注释,让程序始终将焦点移动到Text2(如果它还没有),然后将焦点移动到Text1,这样Text1将始终“重新获得”焦点
但是要小心!首先将焦点放在另一个控件上可能会产生一些你可能不想要的新事件!