我有一個帶有Timer組件的Windows窗體,默認情況下(設計)定時器已啓用,但是基於發送到表單的一些參數,我禁用了form_load上的定時器。在Form_Load事件(VB.NET)之前觸發了Timer事件標記
我正面臨一個非常奇怪的場景,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形式被禁用。我知道解決方案是微不足道的,只是使默認情況下禁用定時器,然後啓用基於PARAMS,但我想知道爲什麼Timer1_Tick有時在OpenForm Sub和Form1_Load Sub之前被解僱! ?
非常感謝您的時間。 Sameh
Interval屬性的值是什麼? – Steve
這是不尋常的,但不是不可能的。 DoEvents()或MessageBox將是很好的方式讓事件發生亂序。是的,解決方法很簡單。 –
謝謝@Steve它是500毫秒 – Sameh