VB 计时程序问题

来源:百度知道 编辑:UC知道 时间:2024/06/15 12:41:09
Private Sub Command1_Click()
ProgressBar1.Max = Val(Text1)
Timer1.Interval = 1000
End Sub

Private Sub Command2_Click()
Timer1.Interval = 0
ProgressBar1.Value = ProgressBar1.Min

End Sub

Private Sub Form_Load()
Text1 = 10
End Sub

Private Sub ProgressBar1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
ProgressBar1.Value = ProgressBar1.Min
End Sub

Private Sub Timer1_Timer()
If ProgressBar1.Value < Val(Text1) Then
ProgressBar1.Value = ProgressBar1.Value + 1
End If
End Sub
以上是一个计时的程序,其中
Private Sub Command2_Click()
Timer1.Interval = 0
ProgressBar1.Value = ProgressBar1.Min
End sub
我用这个来把进度条清零,重新开始,为什么第一次按下这个的时候,进度条还会前进一格。就是说,按下以后,程序还调用了一次TIMER事件,要按2次这个控件,才能使进度条完全清零,为什么。。

直接让它Timer1.Enabled = False,但是一般情况下它还会执行那一次

Timer就像多线程一样 不能一下子停下。
可以这样写:
Dim unadd as boolean
Private Sub Timer1_Timer()
If ProgressBar1.Value < Val(Text1) and unadd = false Then
ProgressBar1.Value = ProgressBar1.Value + 1
End If
End Sub

Private Sub Command2_Click()
unadd = true '中止一切timer活动
Timer1.Interval = 0
ProgressBar1.Value = ProgressBar1.Min '清零
End sub

用enabled属性来控制。。

Timer1的Interval属性值太小了,设置大一些吧
Timer1.Interval = 500 应该差不多了

同意楼上,不能完全相信控件,还是加个控制条件的好,也算增加程序的鲁棒性了。