如何一个学习时间倒数计时器?

61白 2014-01-27 08:14:20
我从来没学过VB。在高中的时候,课上也就是跟着老师走才过的考试。编程能力为0。
我现在想做一个学习时间倒数计时器。这个计时器的流程如下。
以20分钟开始倒数。等倒数完毕后,自动开始一个10分钟的倒数。然后自动一个20分钟的倒数,以此继续。
所以这个计时器的流程是
按下按钮
20分钟倒数
倒数结束
10分钟倒数
倒数结束
20分钟倒数
倒数结束
10分钟倒数
……

我看了一下网上的教程。做了一个下面的代码

Private Sub Command1_Click(Index As Integer)
Timer1.Enabled = True

End Sub


Private Sub Timer1_Timer()
Dim a As Integer
Dim b As Integer
a = Label1.Caption " 我设置的初始值是20
b = 1
Label1.Caption = a - b
If Label1.Caption = "0" Then
Label1.Caption = 10 "Timer1的interval值我设置的是60000
End If
End Sub


但这个代码有两个个问题。
将Label1.Caption数值只能是整数,我试过调整Format,但并不成功。我希望是以HH:MM:SS这样的格式来显示。
在结束了第一个10分钟倒数后,并不能返回20分钟倒数,而是一直10分钟倒数下去。我也不知道该如何去办。

请各位大牛帮我想想办法。谢谢!
...全文
454 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
61白 2014-01-27
  • 打赏
  • 举报
回复
受2楼提示,我做了一下修改,成了这样

Option Explicit
Dim a As Integer

Private Sub Command1_Click(Index As Integer)
Timer1.Enabled = True
Label1.Caption = 20
Label1.ForeColor = vbRed
End Sub

Private Sub Command2_Click(Index As Integer)
Timer1.Enabled = False
Label1.Caption = 20
Label1.ForeColor = vbRed
End Sub


Private Sub Timer1_Timer()
a = a + 1
If a < 20 Then
    Label1.Caption = 20 - a
    Label1.ForeColor = vbRed
     If a = 19 Then
    MsgBox "可以休息了!", vbExclamation
    End If
ElseIf a < 30 Then
    Label1.Caption = 30 - a
    Label1.ForeColor = vbBlue
Else
    a = 0
    Label1.Caption = 20
    MsgBox "该学习了!", vbCritical
    Label1.ForeColor = vbRed
End If
End Sub
可以基本满足需要。 但目前仍然有两个问题: 1.如何将时间格式改成"HH:MM:SS"的样式。 2.我希望在Msgbox出现时播放一个音乐,却不知如何实现。 恳请各位指导。
61白 2014-01-27
  • 打赏
  • 举报
回复
引用 3 楼 bcrun 的回复:
如果真是“编程能力为0”的话,第一步还是先找本“从入门到精通”之类的书来按部就班学习一下较好,虽然未必能精通,先求入门也是好的
身处国外,对伟大祖国的教材获取能力有限。。。其实也有。。。但都在国内。。
bcrun 2014-01-27
  • 打赏
  • 举报
回复
如果真是“编程能力为0”的话,第一步还是先找本“从入门到精通”之类的书来按部就班学习一下较好,虽然未必能精通,先求入门也是好的
61白 2014-01-27
  • 打赏
  • 举报
回复
引用 1 楼 of123 的回复:
将 30 分钟当作一个周期来考虑:
Option Explicit
Dim a As Integer

Private Sub Command1_Click()
Timer1.Enabled = True
Label1.Caption = 20
Label1.ForeColor = vbRed
End Sub

Private Sub Timer1_Timer()
a = a + 1
If a < 20 Then
    Label1.Caption = 20 - a
    Label1.ForeColor = vbRed
ElseIf a < 30 Then
    Label1.Caption = 30 - a
    Label1.ForeColor = vbBlue
Else
    a = 0
    Label1.Caption = 20
    Label1.ForeColor = vbRed
End If
End Sub
尝试运行后蹦出对话框“编译错误: 过程声明与同名事件活过程的描述不匹配” 第四行:Private Sub Command1_Click() 被圈中
of123 2014-01-27
  • 打赏
  • 举报
回复
将 30 分钟当作一个周期来考虑:
Option Explicit
Dim a As Integer

Private Sub Command1_Click()
Timer1.Enabled = True
Label1.Caption = 20
Label1.ForeColor = vbRed
End Sub

Private Sub Timer1_Timer()
a = a + 1
If a < 20 Then
    Label1.Caption = 20 - a
    Label1.ForeColor = vbRed
ElseIf a < 30 Then
    Label1.Caption = 30 - a
    Label1.ForeColor = vbBlue
Else
    a = 0
    Label1.Caption = 20
    Label1.ForeColor = vbRed
End If
End Sub

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧