如何延迟VB6中的LostFocus事件
How to delay the LostFocus Event in VB6
我在涉及 LostFocus
事件的过程中遇到问题。
当光标从特定文本框失去焦点时,我只是将焦点放回该文本框。
我的问题是移除焦点的时间足够长,以至于用户无法单击注销按钮。有没有办法拦截 LostFocus
事件足够长的时间以允许用户单击注销按钮?
结合使用 Timer
和表单边界之外的另一个控件,您可以实现这一点。
Private Sub Text1_LostFocus()
Combo1.SetFocus
ReturnFocusTimer.Enabled = True
End Sub
Private Sub ReturnFocusTimer_Timer()
ReturnFocusTimer.Enabled = False
Text1.SetFocus
End Sub
在此示例中,Combo1
位于表单底部之外。您可以根据需要控制 ReturnFocusTimer
间隔时间。
显然我不知道这里的大局。但是,仅保留您所说的内容,下面的技巧就可以了。实际上事件被短暂延迟,允许点击按钮:
Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Text1_LostFocus()
Sleep 100
DoEvents
Text1.SetFocus
End Sub
我在涉及 LostFocus
事件的过程中遇到问题。
当光标从特定文本框失去焦点时,我只是将焦点放回该文本框。
我的问题是移除焦点的时间足够长,以至于用户无法单击注销按钮。有没有办法拦截 LostFocus
事件足够长的时间以允许用户单击注销按钮?
结合使用 Timer
和表单边界之外的另一个控件,您可以实现这一点。
Private Sub Text1_LostFocus()
Combo1.SetFocus
ReturnFocusTimer.Enabled = True
End Sub
Private Sub ReturnFocusTimer_Timer()
ReturnFocusTimer.Enabled = False
Text1.SetFocus
End Sub
在此示例中,Combo1
位于表单底部之外。您可以根据需要控制 ReturnFocusTimer
间隔时间。
显然我不知道这里的大局。但是,仅保留您所说的内容,下面的技巧就可以了。实际上事件被短暂延迟,允许点击按钮:
Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Text1_LostFocus()
Sleep 100
DoEvents
Text1.SetFocus
End Sub