我在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秒间隔后,仍然执行了计时器事件。 此代码除主表单外还有其他形式。
答案 0 :(得分:1)
在卸载父窗体后触发定时器是VB6中的常见问题。在运行卸载表单的VB6代码时,可以调度WM_TIMER消息。这导致事件迟到。在表单级别声明一个私有布尔值mbIsLoaded
。将其分配到True
中的Form_Load
和False
中的Form_Unload
。在您的计时器事件处理程序中,将其设为第一行代码:If mbIsLoaded Then Exit Sub
。
答案 1 :(得分:0)
如果计时器在卸载表单后触发,则会导致重新加载表单,或者有两个表单实例已加载。
对于第一种情况,尝试在Form_Load
事件中添加断点并单步执行卸载代码以查看触发它的内容。
对于第二种情况,请确保使用EITHER表单的隐式“游戏”全局引用,或者创建使用显式本地引用来保存已加载的表单。我希望您仍然使用隐式全局引用。