问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

VB 倒计时器

发布网友 发布时间:2022-04-23 13:53

我来回答

5个回答

热心网友 时间:2022-04-24 12:40

Option Explicit
'定义两个API,SetTimer是建立一个定时器,KillTimer是删除一个定时器
Public Declare Function SetTimer Lib "user32.dll" (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Public Declare Function KillTimer Lib "user32.dll" (ByVal hWnd As Long, ByVal nIDEvent As Long) As Long

'这个函数启动一个定时器,其中iSeconds表示要计时的秒数
Public Sub TimerOn(hWnd As Long, iSeconds As Long)
Dim iTimer As Long
iSeconds = iSeconds * 1000 '转换为毫秒
'启动定时器,第一个参数是句柄,第二个参数是这个定时器的ID号,第三个参数是时间,第四个参数是当定时器时间到之后,要调用哪个函数
iTimer = SetTimer(hWnd, 1, iSeconds, AddressOf TimeOutProcessor)

End Sub

'关闭一个定时器
Public Sub TimerOff(hWnd As Long)
Dim iKillTimer As Long
'关闭ID为1的定时器,第一个参数是句柄,第二个参数是ID号
iKillTimer = KillTimer(hWnd, 1)

End Sub

'这个函数是计时器时间到之后执行的程序
Public Sub TimeOutProcessor(ByVal hWnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, ByVal dwTime As Long)
'弹出一个框
MsgBox ("It works!")
End Sub

使用方法
新建一个模块,把这些代码放在模块里面,然后在窗体上放两个按钮,写入如下代码

Private Sub Command1_Click()
TimerOn Me.hWnd, 2
End Sub

Private Sub Command2_Click()
TimerOff Me.hWnd
End Sub

这样当你按了Command1后,每过2秒,将弹出一个框,直到你按了Command2

热心网友 时间:2022-04-24 13:58

'建立一个text1,一个label1,一个timer1,两个command1-2,不用设置任何属性。
Option Explicit
Dim M As Single, S As Long
Private Sub Form_Load()
form1.Width = 3800
form1.Height = 1800
form1.BackColor = RGB(150, 120, 80)
Timer1.Interval = 1000
Timer1.Enabled = False
Text1.Width = 2400
Text1.Height = 300
Text1.Left = 100
Text1.Top = 400
Text1.ForeColor = &H909090
Text1.Visible = True
Command1.Width = 900
Command1.Height = 400
Command1.Left = 2600
Command1.Top = 150
Command2.Width = 900
Command2.Height = 400
Command2.Left = 2600
Command2.Top = 650
Label1.Width = 2400
Label1.Height = 1000
Label1.Left = 100
Label1.Top = 100
Label1.BackColor = &H0
Label1.ForeColor = &H4410FF
Label1.Alignment = 1
Label1.FontSize = 50
Label1.Caption = ""
Label1.Visible = False
Text1.Text = "在此输入分钟,再点击开始"
Command1.Caption = "开始"
Command2.Caption = "退出"
Command1.Enabled = False
End Sub
Private Sub command1_Click()
If Command1.Caption = "开始" Then
If Text1.Text = "" Then Exit Sub
M = CSng(Val(Text1.Text))
If M <= 0 Then Text1.Text = "": Exit Sub
S = M * 60
If S = 0 Then Text1.Text = "": Exit Sub
Text1.Visible = False
Label1.Caption = Str(S)
Label1.Visible = True
Timer1.Enabled = True
Command1.Caption = "停止"
ElseIf Command1.Caption = "停止" Then
Timer1.Enabled = False
Command1.Caption = "继续"
Command2.Caption = "重新开始"
ElseIf Command1.Caption = "继续" Then
Timer1.Enabled = True
Command1.Caption = "停止"
Command2.Caption = "退出"
End If
End Sub
Private Sub command2_Click()
If Command2.Caption = "重新开始" Then
Form_Load
ElseIf Command2.Caption = "退出" Then
End
End If
End Sub
Private Sub Text1_Change()
Command1.Enabled = True
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
If Text1.Text = "在此输入分钟,再点击开始" Then
Text1.ForeColor = &H0
Text1.Text = ""
End If
End Sub

Private Sub Timer1_Timer()
S = S - 1
Label1.Caption = Trim(Str(S))
If S = 0 Then
MsgBox "时间到!!!"
Beep
Timer1.Enabled = False
Label1.Visible = False
Text1.Visible = True
Command1.Caption = "开始"
End If
End Sub

热心网友 时间:2022-04-24 15:33

SetTimer 和 KillTimer其实也是创建一个计时器,与系统的计时器控件差别不大
不错,Timer控件是有一些误差,但我们可以换一种思路,我们可以用系统的时间为准,来做倒记时,比如:

'在你原来的控件的基础上,添加一个计时器控件,添如下代码
Dim EndTime As Double
Private Sub Command1_Click()
Dim h As Integer, m As Integer, s As Integer
h = Val(Text1.Text)
m = Val(Text2.Text)
s = Val(Text3.Text)
EndTime = Now + h / 24# + m / (24# * 60) + s / (24# * 3600)
Timer1.Interval = 100
Timer1.Enabled = True
End Sub

Private Sub Command2_Click()
Timer1.Enabled = False
End Sub

Private Sub Timer1_Timer()
If EndTime = Now Then
Timer1.Enabled = False
Label1.Caption = "计时完毕"
Else
Label1.Caption = Format(EndTime - Now, "HH:MM:SS")
End If
End Sub

热心网友 时间:2022-04-24 17:24

只会timer,一起学学
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎么鉴别匡威真假鉴别鉴别匡威真假的方法与技巧 洛阳小碗汤怎么做 酥肉丸子汤如何烹饪简单而又不失美味? 直通车产出比多少不亏?产出比低怎么调整? 淘宝直通车投产比多少才是盈利?怎么提升? 车打不着拧钥匙没反应 车打火的钥匙拧不动 微信关闭时后台还在图标上还有个小锁什么意思 坦克世界闪击战电脑需求配置玩坦克世界电脑配置要达到什么标准_百度... 坦克世界对电脑配置要求高不高玩坦克世界电脑需要什么配置要求 坦克世界对电脑的配置要求是多少坦克世界配置要求 有啥子倒计时软件能精准到分钟 浴室台盆是台上盆好还是台下盆,优缺点是什么 防霉硅胶是什么东西? 洗手盆台上盆和台下盆的优缺点介绍 硅胶和AB胶凝固后将卫生间洗手盆和台面粘合,用什么方法可以在不损坏台面和洗手盆的前提下取下洗手盆? 请问审讯室用的硅胶洗手盆哪家的品质好? 不可忽略的台盆选购技巧 浴室脸盆边和磁砖的粘接处的硅胶如何清除,我想把脸盆拆下来。行吗?谢谢专家。 水槽台下盆还是台上盆哪种最好 台盆下水用白硅胶封闭后,马上用水发现白硅胶变黄,是什么原因 台上盆VS台下盆,优缺对比帮您挑到好台盆! 硅胶 发霉 发黑怎么办 台盆上的硅胶怎样清理 卫生间台上盆一定要用硅胶粘吗?有没有其他办法? 台盆硅胶发霉怎么清洗? 联想手机A65删除高德地图后手机内还会有残存文件吗 飞鹤星飞帆四段奶粉为什么比三段的要甜 你们有比较飞鹤奶粉哪个系列好些吗? 飞鹤哪个系列奶粉营养好? 飞鹤哪个系列的奶粉好?求推荐! 手机算卦可信吗 测单摆的重力加速度时为什么用的倒数计时计数法是什么? 请问大佬有微润辩论赛倒计时工具 V1.0 绿色版软件免费百度云资源吗 NBA的24秒计时器是怎样控制的? 大学新生必备效率工具是什么呢? 抖音几万块买的二手奢侈品手表是真的吗? 产品发布会倒计时文案怎么写? 哪款天气软件最准确? 详解托福口语如何精准把握时间 营销技巧:如何做好精准营销 恐鬼症怎么才算通关 settimeout计时器倒计时,效果我做好了,但测算2分钟差了10秒,怎么解决? 进博会进入倒计时阶段,有哪些国产科技值得我们期待? 有没有用过卡西欧PRO TREK PRW-6800的知友,这个表值得入手么? 现在已经高考倒计时了,去上高考冲刺班还有用吗? “autonavidata70”是什么意思? 液化气罐尺寸有小点的吗? 吃火锅大多都是小型煤气罐,那么小型煤气罐都有哪些危害? 去年,我国测绘人员把红色测量觇标竖立在地球之颠珠峰脚下的6个交会测量点同时展开峰顶联测,对珠峰“身 峰的笔顺笔画顺序