VB 计时程序问题

PrivateSubCommand1_Click()ProgressBar1.Max=Val(Text1)Timer1.Interval=1000EndSubPrivat... 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次这个控件,才能使进度条完全清零,为什么。。
展开
 我来答
swx1995
2009-04-18 · TA获得超过2696个赞
知道大有可为答主
回答量:1477
采纳率:0%
帮助的人:2502万
展开全部
直接让它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
司徒惊月
2009-04-18 · TA获得超过1726个赞
知道大有可为答主
回答量:4186
采纳率:0%
帮助的人:1727万
展开全部
用enabled属性来控制。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lanhaisir
2009-04-18 · TA获得超过107个赞
知道答主
回答量:84
采纳率:0%
帮助的人:0
展开全部
Timer1的Interval属性值太小了,设置大一些吧
Timer1.Interval = 500 应该差不多了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lnleny
2009-04-18 · TA获得超过492个赞
知道小有建树答主
回答量:919
采纳率:0%
帮助的人:617万
展开全部
同意楼上,不能完全相信控件,还是加个控制条件的好,也算增加程序的鲁棒性了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式