Vb6 卸载表单后计时器仍在运行

Vb6 卸载表单后计时器仍在运行,vb6,timer,Vb6,Timer,我在vb6中得到了一个代码: If KeyCode = vbKeyEscape Then i = MsgBox("you want to quit?", 4) If i = 6 Then Timer1.Enabled = False Unload Me End If End If 在卸载表单并间隔10秒之后,计时器事件仍然被执行。 此代码是主窗体之外的另一种窗体。如果卸载窗体后计时器触发,则是由于

我在vb6中得到了一个代码:

If KeyCode = vbKeyEscape Then
        i = MsgBox("you want to quit?", 4)
        If i = 6 Then
            Timer1.Enabled = False
            Unload Me
        End If
 End If
在卸载表单并间隔10秒之后,计时器事件仍然被执行。
此代码是主窗体之外的另一种窗体。

如果卸载窗体后计时器触发,则是由于某种原因导致窗体重新加载,或者加载了两个窗体实例

对于第一种情况,尝试在
Form_Load
事件中添加一个断点,然后单步遍历卸载代码以查看触发它的原因


对于第二种情况,请确保对表单使用隐式“game”全局引用,或者创建并使用显式局部引用来保存加载的表单。我希望您仍然使用隐式全局引用。

如果计时器在卸载表单后触发,则是由于某种原因导致表单重新加载,或者加载了两个表单实例

对于第一种情况,尝试在
Form_Load
事件中添加一个断点,然后单步遍历卸载代码以查看触发它的原因


对于第二种情况,请确保对表单使用隐式“game”全局引用,或者创建并使用显式局部引用来保存加载的表单。我希望您仍然使用隐式全局引用。

卸载父窗体后触发计时器是VB6中的常见问题。WM_定时器消息可以在VB6代码运行卸载表单时发送。这会导致该事件推迟举行。在表单级别声明私有布尔值
mbIsLoaded
。将其分配到
表单加载
中的
True
表单卸载
中的
False
。在计时器事件处理程序中,将其作为第一行代码:
如果mbIsLoaded,则退出Sub

卸载其父窗体后触发计时器是VB6中的常见问题。WM_定时器消息可以在VB6代码运行卸载表单时发送。这会导致该事件推迟举行。在表单级别声明私有布尔值
mbIsLoaded
。将其分配到
表单加载
中的
True
表单卸载
中的
False
。在计时器事件处理程序中,将其作为第一行代码:
如果mbIsLoaded,则退出Sub

计时器是否在主窗体中?如果计时器在另一个窗体上,能否向我们显示包含对另一个窗体的引用的完整代码?哦,最好在queryLoad()事件中执行此操作,以捕获单击X的用户,等等#迪安娜我得到了两种形式:
main
game
。这段代码在游戏表单上,我想做的是退出游戏表单并返回
main
表单。在
游戏
表单上方的代码消失后,计时器事件仍然被执行,并且不使用幻数,存在MsgBox常量的原因是:)计时器在主表单中吗?如果计时器在另一个表单上,您能向我们展示您的完整代码,包括对其他表单的引用吗?哦,最好在queryLoad()事件中执行此操作,以捕获用户单击X等。Deanna我得到了两种形式:
main
game
。这段代码在游戏表单上,我想做的是退出游戏表单并返回
main
表单。在
游戏
窗体上的代码消失后,计时器事件仍然被执行,并且不使用幻数,MsgBox常量的存在有一个原因:)非常好的建议。在卸载表单之前也要考虑这个表单,非常好的建议。在卸载表单之前也要考虑这个表单。