Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何使用小时、分钟和秒创建倒计时计时器?_Vb.net_Countdown_Timespan - Fatal编程技术网

Vb.net 如何使用小时、分钟和秒创建倒计时计时器?

Vb.net 如何使用小时、分钟和秒创建倒计时计时器?,vb.net,countdown,timespan,Vb.net,Countdown,Timespan,我想知道我将如何着手修复我的倒计时计时器,以便它以小时为单位显示时间:分:秒 目前,它只输出秒数,我不确定哪里出错了。 非常感谢您的帮助 代码: Public Class Form1 Dim TargetDT As DateTime Dim fields() As String Dim Days, Hours, minutes, seconds, milliseconds As String Private Sub Button1_Click(sender As

我想知道我将如何着手修复我的倒计时计时器,以便它以小时为单位显示时间:分:秒

目前,它只输出秒数,我不确定哪里出错了。
非常感谢您的帮助

代码:

Public Class Form1
    Dim TargetDT As DateTime
    Dim fields() As String
    Dim Days, Hours, minutes, seconds, milliseconds As String

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        fields = Split(TextBox1.Text, ":")
        Hours = fields(0)
        minutes = fields(1)
        seconds = fields(2)

        Dim CountDownFrom As TimeSpan = TimeSpan.FromHours(Hours).FromMinutes(minutes).FromSeconds(seconds)
        Timer1.Interval = 1000
        TargetDT = DateTime.Now.Add(CountDownFrom)
        Timer1.Enabled = True
    End Sub

    Private Sub Timer1_Tick(sender As Object, e As System.EventArgs) Handles Timer1.Tick
        Dim ts As TimeSpan = TargetDT.Subtract(DateTime.Now)
        If ts.TotalMilliseconds > 0 Then
            Con1Time.Text = ts.ToString("hh\:mm\:ss")
        Else
            Con1Time.Text = "0:00:00"
            Timer1.Stop()
            MessageBox.Show("Done")
        End If
    End Sub
End Class

首先,将要倒计时的时间指定给
TimeSpan
字段。要开始倒计时,请使用
计时器和
秒表调用
Start
。在
计时器的
事件处理程序中,勾选
计时器的
事件处理程序,获取
秒表的
已用时间
,然后从原始时间中减去该时间,以
时间跨度
的形式获取剩余时间。然后您可以格式化并显示它。当剩余时间为零时,倒计时已过期

Private countDownTime As TimeSpan
Private countDownWatch As Stopwatch

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    countDownTime = TimeSpan.FromMinutes(30)
    countDownWatch = Stopwatch.StartNew()
    Timer1.Start()
End Sub

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    Dim timeRemaining = countDownTime - countDownWatch.Elapsed

    If timeRemaining < TimeSpan.Zero Then
        timeRemaining = TimeSpan.Zero
    End If

    Label1.Text = timeRemaining.ToString("hh\:mm\:ss")

    If timeRemaining = TimeSpan.Zero Then
        Timer1.Stop()

        MessageBox.Show("Countdown complete")
    End If
End Sub
这并不像你想象的那样。您只能从秒数
调用中获得
的结果。如果要创建包含小时、分钟和秒的
TimeSpan
,请调用相应的构造函数

Dim CountDownFrom As TimeSpan = New TimeSpan(Hours, minutes, seconds)

当然,这些参数应该是
整数
值,而不是
字符串
。打开
选项并使用正确的数据类型。

您在
TextBox1.Text中有什么?您只需使用
[TimeSpan]=[DateTimeEnd]-[DateTime.Now]
并格式化生成的TimeSpan.Textbox1.text是输入,因此用户以hh/mm/ss格式输入指定的时间,输入的任何内容都是计时器,如果有意义的话?
Dim CountDownFrom As TimeSpan = New TimeSpan(Hours, minutes, seconds)