关于VB 定时器的问题 设计一个倒计时的程序,COMMAND1按钮开始倒计时,LABEL3标签显示时间。

DimtAsIntegerSubCommand1_Click()t=60*Val(Text1.Text)Timer1.Enabled=TrueEndSubSubTimer... Dim t As Integer

Sub Command1_Click()
t = 60 * Val(Text1.Text)
Timer1.Enabled = True
End Sub

Sub Timer1_Timer()
Dim m, s As Integer
t = t - 1
m = Int(t / 60)
s = t Mod 60
Label3.Caption = m & "分" & s & "秒"
If (t = 0) Then
Timer1.Enabled = False
MsgBox ("时间到!")
End If
End Sub

以上为代码,定时器名称为Timer1,书上要求我在设计时,enabled属性为FALES,问题是当enabled为false时,运行代码,代码能跑,在文本框无法输入数值了,时间显示-1分-1秒。。-1分-2秒。。如果我在设计时把enabled属性为true,代码能跑,但是我没输入数值的话,还是自动倒计时 -1分-1秒,-1分-2秒,如果我输入数值,就正常倒计时了。为什么啊?》
2.Sub Timer1_Timer()
Dim m, s As Integer
t = t - 1
m = Int(t / 60)
s = t Mod 60
请各位高手解释下,这段关于定时器的代码是什么意思。怎么运算的。
展开
 我来答
匿名用户
推荐于2020-12-18
展开全部
1.你说的“在文本框无法输入数值了”是不是因为你把“Command1"的Enabled属性设为False了,书上要求的是不是把“Timer1”的Enabled属性设为False?
之所以 Label3会显示-1分-1秒。。-1分-2秒。。是因为t 值小于0了,也就是说你可能在文本框输入0或什么都没输入。你可以把代码改成这样:
Sub Command1_Click()
If (Val(Text1.Text) = 0) Then
MsgBox ("时间到!")
Timer1.Enabled = False
Else
t = 60 * Val(Text1.Text)
Timer1.Enabled = True
End If
End Sub

也可以把 “If (t = 0) Then” 改为 "If (t = 0) or (t < 0) Then"

2.
Sub Timer1_Timer()
Dim m, s As Integer
t = t - 1 ’当代码跑到这里,t值会减去 1
m = Int(t / 60) ’这段代码把t值转换成分钟(t值的单位是“秒”)
s = t Mod 60 ’这段代码把t值 除以 60后把整数部分去掉,剩下余数,就是秒钟

也就是说如果你在文本框里输入了10 ,就是600秒 m=10;s=0,当你按下Command1 ,过了一秒 m=9,s=59;过了两秒m=9;s=58;过了一分钟m=9,s=0...
bz144
2017-08-02 · TA获得超过1825个赞
知道小有建树答主
回答量:1096
采纳率:89%
帮助的人:273万
展开全部
这是一个利用Timer控件做的定时器,你在初始状态应将定时器Enabled属性设置为False。然后利用按钮启动定时器Timer(即代码中Timer1.Enabled = True),关于出现负值的问题,你可以将"If (t = 0) Then"改为"If (t <= 0) Then",这样出现负值就直接停计时器了。出现这种情况的原因是:如果文本框为空则Val(text1.text)=0即t的初值为0,但启动定时器后没有进行判断直接就减一,所以出现了负值。最简单的办法是先判断,满足停止计时条件(t <= 0)则退出计时,不满足则继续。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式