Hol*_*ble 2 vb.net timer countdowntimer
我正在尝试使用计时器从我选择的指定时间开始倒计时,使用格式MM:SS将时间分为分钟和秒,然后在时间到达00:00时停止。
到目前为止,我已经使用了在此处找到的先前答案,并根据我的知识对它进行了倒计时修改,尽管我遇到了一个障碍,其中当计时器成功开始倒计时时,它会延迟并且不同步倒计时分钟。
例如,从 120 秒开始倒计时;
02:00>
02:59>
02:58>
02:57>
02:56>
02:55
然后在同样的测试下继续倒计时90秒;
02:30>
01:29>
01:28>
01:27>
01:26>
01:25
当倒计时到达00或30秒时,它会错误地显示剩余的分钟数并且无法理解或弄清楚如何解决它。
这是我的计数计时器代码;
Private Sub tmrCountdown_Tick(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles tmrCountdown.Tick
SetTime = SetTime - 1
lblTime.Text = FormatTime(SetTime)
If SetTime = 0 Then
tmrCountdown.Enabled = False
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
这是我用于格式化时间的函数代码;
Public Function FormatTime(ByVal Time As Integer) As String
Dim Min As Integer
Dim Sec As Integer
'Minutes
Min = ((Time - Sec) / 60) Mod 60
'Seconds
Sec = Time Mod 60
Return Format(Min, "00") & ":" & Format(Sec, "00")
End Function
Run Code Online (Sandbox Code Playgroud)
这是我的表单加载代码;
Private Sub frmSinglePlayer_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles MyBase.Load
'Setting the time.
SetTime = 120
lblTime.Text = FormatTime(SetTime)
tmrCountdown.Enabled = True
End Sub
Run Code Online (Sandbox Code Playgroud)
我已经设置了;
Dim SetTime As Integer
Run Code Online (Sandbox Code Playgroud)
在我的公共类的顶部,所以我可以将指定的时间输入到倒数计时器中。这可能是非常愚蠢的事情,我无法弄清楚它是什么。
非常感谢任何帮助,请记住,我是编程初学者,很容易与大量代码混淆。(我几乎无法理解函数的原貌。)
感谢您的帮助!
玩这个:
Public Class frmSinglePlayer
Private TargetDT As DateTime
Private CountDownFrom As TimeSpan = TimeSpan.FromMinutes(3)
Private Sub frmSinglePlayer_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
tmrCountdown.Interval = 500
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.Stop()
MessageBox.Show("Done")
End If
End Sub
End Class
Run Code Online (Sandbox Code Playgroud)