我正在尝试在我的应用程序中制作倒数计时器。我已经知道倒计时时间是 4 分钟。我有一个Timer
每秒滴答的声音。现在,我如何更新我的TextBox
,以便它显示格式中的剩余时间HHMMSS
?
编辑:我遇到的问题是计算剩余时间。我应该使用什么?时间戳?
在开始倒计时之前,请使用类似的方式记下当前时间
Dim endTime as DateTime = DateTime.Now.Add(TimeSpan.FromMinutes(4))
然后,当您的滴答事件发生时,您可以计算出还剩多少时间使用
Dim timeLeft as TimeSpan = endTime.Subtract(DateTime.Now)
您可以根据需要格式化 timeLeft,可能使用 Jared 提到的 .ToString("hh:mm:ss")
跟踪时间的最佳方法是使用 DateTime.Now 记录开始时间。然后您可以通过减去保存的值随时看到差异。
Dim diff = DateTime.Now - savedTime
Dim remaining = TimeSpan.FromMinutes(4) - diff
要获得您想要的格式,只需将其作为字符串传递给 .ToString 函数
Dim readable = remaining.ToString("hh:mm:ss")
为计时器添加一个事件处理程序并让它计算剩余时间,格式化字符串并更新文本框。
要跟踪时间并计算差异,您可以使用 Environment.TickCount - 这是最简单的变体。在开始倒计时时保存时间戳,并在每次调用事件处理程序时获取它。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Timer1.Interval = 500
Timer1.Start()
End Sub
Dim stpw As New Stopwatch
Dim CountDownFrom As Integer = 4 * 60 'as seconds
Dim CountDown As New TimeSpan
Private Sub StartCountDown()
CountDown = TimeSpan.FromSeconds(CountDownFrom)
stpw.Stop() : stpw.Reset() : stpw.Start()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If Not stpw.IsRunning Then Exit Sub
Dim TimeRemaining As TimeSpan = CountDown - stpw.Elapsed
Label1.Text = TimeRemaining.Hours.ToString.PadLeft(2, "0"c) & ":" & _
TimeRemaining.Minutes.ToString.PadLeft(2, "0"c) & ":" & _
TimeRemaining.Seconds.ToString.PadLeft(2, "0"c)
If TimeRemaining.TotalMilliseconds <= 0 Then stpw.Stop()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
StartCountDown()
End Sub