VB使用 Timer 控件:
Timer
控件响应时间的流逝。它们独立于用户,编程后可用来在一定的时间间隔执行操作。此控件的一个一般用处是检查系统时钟,判断是否该执行某项任务。对于其它后台处理,
Timer 控件也非常有用。
每个 Timer 控件都有 Interval
属性,指定定时器事件之间的毫秒数。除非禁止此属性,否则定时器在大致相等的时间间隔不断接受事件(称作定时器事件会更贴切)。
在为 Timer 控件编程时应考虑对 Interval 属性的几条限制:
如果应用程序或其它应用程序正在进行对系统要求很高的操作─ 例如长循环、高强度的计算或者正在访问驱动器、网络或端口─ 则应用程序定时器事件的间隔可能比
Interval 属性指定的间隔长。
间隔的取值可在 0 到 64,767 之间(包括这两个数值),这意味着即使是最长的间隔也不比一分钟长多少(大约 64.8 秒)。
间隔并不一定十分准确。要保证间隔准确,应在需要时才让定时器检查系统时钟,而不在内部追踪积聚的时间。
系统每秒生成 18 个时钟信号─ 所以即使用毫秒衡量 Interval 属性,间隔实际的精确度不会超过 18 分之一秒。
每个 Timer 控件必须要与窗体关联。因此要创建定时器应用程序就必须至少创建一个窗体(如果不需要窗体完成其它操作就不必使窗体可见)。
Timer控件报警应用程序代码和制作:
在窗体上放置 Timer 控件
在窗体上放置 Timer 控件的方法与绘制其它控件的方法相同:单击工具箱中的定时器按钮并将它拖动到窗体上。
Timer 控件只在设计时出现在窗体上,所以可以选定这个控件,查看属性,编写事件过程。运行时,定时器不可见,所以其位置和大小无关紧要。
初始化 Timer 控件
Timer 控件有两个关键属性。
![](https://video.ask-data.xyz/img.php?b=https://iknow-pic.cdn.bcebos.com/a6efce1b9d16fdfa36981cfdb38f8c5494ee7b29?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto)
Option Explicit
Dim AlarmTime
Const conMinimized = 1
Private Sub Form_Click()
AlarmTime = InputBox("输入启动闹钟的时间", "VB 闹钟", AlarmTime)
If AlarmTime = "" Then Exit Sub
If Not IsDate(AlarmTime) Then
MsgBox "您输入的时间无效。"
Else ' 从 InputBox 返回的字符串使有效时间,
AlarmTime = CDate(AlarmTime) ' 将它作为一个日期/时间值存储在 AlarmTime 中。
End If
End Sub
Private Sub Form_Load()
AlarmTime = ""
End Sub
Private Sub Form_Resize()
If WindowState = conMinimized Then ' 如果窗体被最小化, 在标题处显示时间。
SetCaptionTime
Else
Caption = "闹钟"
End If
End Sub
Private Sub SetCaptionTime()
Caption = Format(Time, "Medium Time") ' 使用中等时间格式显示时间。
End Sub
Private Sub Timer1_Timer()
Static AlarmSounded As Integer
If lblTime.Caption <> CStr(Time) Then
' 当前秒数与显示秒数不同。
If Time >= AlarmTime And Not AlarmSounded Then
Beep
MsgBox "启动闹钟在 " & Time
AlarmSounded = True
ElseIf Time < AlarmTime Then
AlarmSounded = False
End If
If WindowState = conMinimized Then
' 如果处于最小化状态, 每分钟都需更新窗体标题。
If Minute(CDate(Caption)) <> Minute(Time) Then SetCaptionTime
Else
' 否则每秒钟对标签的标题进行更新。
lblTime.Caption = Time
End If
End If