vb.net - 带有 For 循环的停止时钟继续超过限制并且计数器似乎坏了
问题描述
目前正在尝试一个非常简单的私人项目,在用户点击“开始”后让秒表显示倒计时。理想情况下,时钟旨在倒计时到零的次数等于 TotalLap。它还应该在计时器再次开始之前从计时器中删除一定量的时间(1 分钟 x 当前圈数)。
我尝试了一个 While 循环,现在又尝试了一个 For 循环。在这两种情况下,我称之为“计数器”的标记为“CurrentLap”的都会达到最大值加 1(我添加了一个标签来显示 CurrentLap 值,并且在第一次运行后它总是比 TotalLap 高 1,跳过所有其他圈)。
所以我的问题如下:1)我还没有找到一个放置计时器停止命令的好地方 2)CurrentLap 从 0 直接变为 4(根据我的标签)
下面我将包含我的代码,其中将包含以前被注释掉的尝试。请记住,我对编程相对缺乏经验,并且对术语知之甚少(学习新技能!)。提前致谢。
编辑:顺便说一句,时间当前设置为 .25 以加快测试速度,它通常是一个整数值。
Public Class Form1
Dim CurrentLap As Integer = 0
Dim TotalLap As Integer = 4
Dim Time As Decimal = 0.25
'Dim TimeReduction As Decimal = 0.25
'Dim StartTime As Decimal = (Time - TimeReduction)
Private TargetDT As DateTime
Private CountDownFrom As TimeSpan = TimeSpan.FromMinutes(Time)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
Private Sub btnStart_Click(sender As Object, e As EventArgs) Handles btnStart.Click
tmrCountdown.Interval = 1000
TargetDT = DateTime.Now.Add(CountDownFrom)
tmrCountdown.Start()
End Sub
Private Sub tmrCountdown_Tick(sender As Object, e As System.EventArgs) Handles tmrCountdown.Tick
Dim ts As TimeSpan = TargetDT.Subtract(DateTime.Now)
If ts.TotalMilliseconds > 0 Then
lblTime.Text = ts.ToString("mm\:ss")
Else
lblTime.Text = "00:00"
tmrCountdown.Dispose()
CurrentLap = CurrentLap + 1
For CurrentLap = 0 To TotalLap Step 1
tmrCountdown.Start()
TargetDT = DateTime.Now.Add(CountDownFrom)
If CurrentLap = TotalLap Then Exit For
Next CurrentLap
'While CurrentLap < TotalLap
'tmrCountdown.Start()
'TargetDT = DateTime.Now.Add(CountDownFrom)
'CurrentLap = CurrentLap + 1
'End While
'If CurrentLap < TotalLap Then
'CurrentLap = CurrentLap + 1
'TargetDT = DateTime.Now.Add(CountDownFrom)
'tmrCountdown.Start()
'Else
'tmrCountdown.Stop()
'MsgBox("Race Over")
'End If
End If
lblCurrentLap.Text = CurrentLap.ToString("")
End Sub
结束类
解决方案
推荐阅读
- python-3.x - 如何使用 Ansible Python API 运行 ansible 任务
- python-3.x - Python3
不是 JSON 可序列化的 - python - 在整数列表中找到第一个唯一元素:python
- php - laravel 中的日期选择器日期范围
- c# - 支付网关重定向到asp mvc4中的成功回调url后会话被破坏
- sql - 通过仅重用一次内部查询来优化查询
- rest - API 设计 - 客户端请求中的可选正文 - 验证失败时返回的状态码
- python-3.x - 在 Oracle Linux 6.9 中已安装 Python3.5.5 但未打开
- javascript - “if”和“else if”条件都在过滤器函数中执行(Angular-8,JavaScript)
- arrays - 比较数组条目