如何延迟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