为什么在调用SetFocus时没有运行GotFocus?

时间:2012-11-26 06:23:15

标签: vb6 textbox setfocus

我在TextBox1.GotFocus事件函数的第一行有一个断点。

当我在其他地方调用TextBox1.SetFocus时,GotFocus断点永远不会被击中。为什么呢?

调用函数中的代码:Text1.SetFocus

Private Sub Text1_GotFocus()

   // code here

End Sub

1 个答案:

答案 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将始终“重新获得”焦点

但是要小心!首先将焦点放在另一个控件上可能会产生一些你可能不想要的新事件!