我正在尝试使用计时器从我选择的指定时间开始倒计时,使用格式 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
这是我的格式化时间函数的代码;
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
这是我的表单加载代码;
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
我已经设置了;
Dim SetTime As Integer
在我的公共(public)类(class)的顶部,这样我就可以在倒计时器中输入指定的时间。这可能是非常愚蠢的事情,我不知道它是什么。
非常感谢任何帮助,请记住,我是编程初学者,很容易与大堆代码混淆。 (我几乎无法理解这个函数的本来面目。)
感谢您的帮助!
最佳答案
玩这个:
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
关于vb.net - VB.Net 2010 中倒计时的计时器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16628296/