如何在VB6中延迟LostFocus事件

如何在VB6中延迟LostFocus事件,vb6,Vb6,我遇到一个涉及LostFocus事件的流程问题 当光标从特定文本框中失去焦点时,我只是将焦点放回该框中 我的问题是删除焦点的时间足够长,用户可以单击注销按钮。有没有办法拦截LostFocus事件足够长的时间,以允许用户单击注销按钮?使用计时器和表单边界之外的另一个控件的组合,您可以实现这一点 Private Sub Text1_LostFocus() Combo1.SetFocus ReturnFocusTimer.Enabled = True End Sub Private

我遇到一个涉及
LostFocus
事件的流程问题

当光标从特定文本框中失去焦点时,我只是将焦点放回该框中


我的问题是删除焦点的时间足够长,用户可以单击注销按钮。有没有办法拦截
LostFocus
事件足够长的时间,以允许用户单击注销按钮?

使用
计时器和表单边界之外的另一个控件的组合,您可以实现这一点

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

谢谢你,先生!我很高兴你能来帮忙!!再次感谢你,布莱恩!六羟甲基三聚氰胺六甲醚。。布莱恩,我得到了子函数或未定义的函数。是否有我缺少的引用?不要忘记在表单或模块中添加
Private Declare
sub。如果在模块中,请确保它是公共的。Brian,我在那里添加了整个块,只是更改了我的文本框名称,但我现在遇到了以下错误:
只有注释可能出现在End Sub、End Function或End Property之后
。我在这里做错了什么吗?确保
Private Declare
子文件位于文件的最顶端,就在
选项Explicit
之后。