0

我正在尝试在我的应用程序中制作倒数计时器。我已经知道倒计时时间是 4 分钟。我有一个Timer每秒滴答的声音。现在,我如何更新我的TextBox,以便它显示格式中的剩余时间HHMMSS

编辑:我遇到的问题是计算剩余时间。我应该使用什么?时间戳?

4

4 回答 4

3

在开始倒计时之前,请使用类似的方式记下当前时间

Dim endTime as DateTime = DateTime.Now.Add(TimeSpan.FromMinutes(4))

然后,当您的滴答事件发生时,您可以计算出还剩多少时间使用

Dim timeLeft as TimeSpan = endTime.Subtract(DateTime.Now)

您可以根据需要格式化 timeLeft,可能使用 Jared 提到的 .ToString("hh:mm:ss")

您可以阅读有关TimeSpanDateTime的文档,以获取有关如何使用它们的更多信息。

于 2009-02-18T06:05:52.157 回答
1

跟踪时间的最佳方法是使用 DateTime.Now 记录开始时间。然后您可以通过减去保存的值随时看到差异。

Dim diff = DateTime.Now - savedTime
Dim remaining = TimeSpan.FromMinutes(4) - diff

要获得您想要的格式,只需将其作为字符串传递给 .ToString 函数

Dim readable = remaining.ToString("hh:mm:ss")
于 2009-02-18T06:04:35.217 回答
0

为计时器添加一个事件处理程序并让它计算剩余时间,格式化字符串并更新文本框。

要跟踪时间并计算差异,您可以使用 Environment.TickCount - 这是最简单的变体。在开始倒计时时保存时间戳,并在每次调用事件处理程序时获取它。

于 2009-02-18T06:00:48.753 回答
0
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
于 2009-02-20T17:46:46.437 回答