设置标志。Private Text1_LostFocus() if Fg Then ... End if End If这里的Fg在需要判断时为TRUE即可
用另外的事件 Private Sub Text1_Validate(Cancel As Boolean) MsgBox "OK" End Sub
看来我没有说清楚。我的例子是指我做了一个textbox的lostfocus事件来判断textbox.text是否为空,为空就跳一个提示窗。如果现在我的焦点是在textbox,当焦点跳到另一个控件的时候,调用了lostfocus,这是没有问题的,但当我关闭窗口的时候,如果焦点在textbox,而且textbox.text也为空,跳提示窗就是很烦人的事了,所以希望能编程满足关闭窗口时不调用lostfocus或跳过lostfocus中的语句。别的替代的方法我也有,但是我想知道有没有方法直接解决这个问题的。今天看了一个方法,察看activecontrol来避免按Cancel时的lostfocus调用Private Sub Text1_LostFocus() If Screen.ActiveControl Is Me.cmdCancel Then Debug.Print "按到Cancel" Exit Sub Else Debug.Print "进行LostFoucs的程式" End If End Sub 还有今天发现点右上的关闭按钮和按ALT+F4其实都没有lostfocus发生 @_@bb再问一个问题 Private Sub Text1_LostFocus() Msgbox "hello" End SubPrivate Sub cmdCancel_Click() Unload frmTest End Sub这种情况下,焦点在text1,点Cancel,跳出"hello"对话框,但是不执行Unload frmTest。这是为什么呢?
if Fg Then
... End if
End If这里的Fg在需要判断时为TRUE即可
Private Sub Text1_Validate(Cancel As Boolean)
MsgBox "OK"
End Sub
If Screen.ActiveControl Is Me.cmdCancel Then
Debug.Print "按到Cancel"
Exit Sub
Else
Debug.Print "进行LostFoucs的程式"
End If
End Sub
还有今天发现点右上的关闭按钮和按ALT+F4其实都没有lostfocus发生 @_@bb再问一个问题
Private Sub Text1_LostFocus()
Msgbox "hello"
End SubPrivate Sub cmdCancel_Click()
Unload frmTest
End Sub这种情况下,焦点在text1,点Cancel,跳出"hello"对话框,但是不执行Unload frmTest。这是为什么呢?
将cmdCancel.CausesValidation=False,可解决。