我有一个带有 Timer 组件的 Windows 表单,默认情况下(设计)计时器已启用,但基于发送到表单的一些参数,我禁用了 form_load 上的计时器。
我面临一个非常奇怪的场景,Timer_Tick 事件有时甚至在 form_load 被触发之前被触发,例如,这发生在应用程序最小化 20 分钟,然后我打开应用程序并尝试打开新表单,尤其是在慢速系统上.
代码如下:
'=============== Code of the form with Timer
Public Sub OpenForm(SomeParams)
'Set Form Properties
Me.Show() 'Here the event Form_Load fired
End Sub
Private Sub Form_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
'Some Code ...
Timer1.Enabled = False/ True 'Based True or false based on parameters
'Code ...
End Sub
Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
'Code here
'The code raise error if form load is not fired, because need info from params ...
End Sub
'=============== Code in the calling form (MainForm)
'Calling the Form
dim obj As new Form1 'I think form this line the Timer1_Tick Fired, before load
obj.OpenForm(Params)
当引发异常时,我关闭已处理的异常并尝试再次打开表单,它打开表单时禁用了 Timer1。
我知道解决方案很简单,只需默认禁用计时器,然后根据参数启用,但我想知道为什么 Timer1_Tick 有时会在 OpenForm Sub 和 Form1_Load Sub 之前触发!?
非常感谢您的时间。萨梅