研究問題:
- Timer循環體中怎樣避免反覆調用的死循環?
要點:
- 定義其他部件,通過控制其他部件的變化間接的控制所要控制的部件
如:在Form1裏面加個Text1控件,Visble設爲False不可見。把Text1當成全局變量使用,其他窗口(比如Form2裏面的Label1)要調用的時候,在Form2裏面輸入代碼Label2.Caption = Form1.Text1.text就可以調用。 - 使用中間變量,在其他部件模塊中添加並讓計時器Enable=true工作,而在timer中讓計時器不工作,即計時器避免了timer中的死循環,僅僅調用了其他部件的控件。
- 不要在Form_Load事件中定義整型變量h,因爲這是局部變量,僅在Load事件中有效,你可以在在代碼區域的最頂端定義變量h,它屬於全局變量,在整個窗體運行中有效,也可以在Timer控件的Timer事件中定義靜態變量h,格式:static h as integer,具體代碼如下:
Private Sub Timer1_Timer()
Static h As Integer
h = h + 1
Text1.Text = h
End Sub
截圖展示區:
-
1.
Private Sub Form_Load()
Timer1.Interval = 1000
Label2.Caption = 1
End Sub
Private Sub Label1_Change()
Label2.Caption = Label2.Caption + 1
End Sub
Private Sub Timer1_Timer()
If Label1.Caption <> Str(Timer) Then
Label1.Caption = Time
End If
End Sub
%(註釋:當label1.caption發生變化時,label2.caption+1)
-
2.
Private Sub Command1_Click()
Num = Val(Text1.Text * 60)
Text1.Text = Num
Timer1.Enabled = True(此時計時器就開始計時,此時避免了循環,因爲Timer計時器循環的僅僅是Timer1_Timer()中的結構)
End Sub
Private Sub Form_Load()
Timer1.Enabled = False
Text1.Text = "2"
End Sub
Private Sub Timer1_Timer()
Text1.Text = Text1.Text - 1(設置Enable=false,若設置爲true則Text1.Text顯示爲2,1,0,時間到,-1,-2….即馬上從Command1_Click()中的Text1.Text = "2"傳入值就開始循環)
If Text1.Text = 0 Then
A = MsgBox("時間到", 0, "工程1")
End If
End Sub