vb.net - VB.Net 2010 中倒计时的计时器?

标签 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

当倒计时达到0030秒时,它会错误地显示剩余分钟数,并且无法理解或弄清楚如何修复它。

这是我的计数计时器代码;

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/

相关文章:

c# - Windows窗体中的定时器运行状态

java - 使用计时器对 Java 线条图进行动画处理

android - 暂停/恢复 CountDownTimer Android

android - 如何在一定时间后隐藏自定义加载图标(android)?

vb.net - 序列化/反序列化二维数组

java - Wicket 应用程序、序列化和 Java 计时器

c# - WinForms Designer 自动创建的事件处理程序

java - 从 3 个 Textview 获取值并转换为 int 用于倒计时器

.net - 关于构造函数的代码分析警告

c# - .NET 中的文本文件 DataProvider