首页 > 解决方案 > 不使用计时器功能的 Visual Basic 上的秒表

问题描述

我正在尝试使用 Visual basic 创建一个秒表,但我必须在不使用计时器功能的情况下这样做,而是使用循环来制作它。当我单击停止按钮时,秒表标签上的时间应该以圈数的形式转移到列表框中(我还没有走那么远)。但我认为要让秒表真正开始滴答作响,我应该使用 4 个嵌套循环,持续一毫秒、一秒、一分钟、一小时,但我不知道该怎么做。任何帮助都会很棒。下面是我到目前为止所拥有的,但我没有使用 4 个嵌套循环,因为我不知道如何放入它。

Private Sub btnStart_Click(sender As Object, e As EventArgs) Handles btnStart.Click
    System.Threading.Thread.Sleep(1)
    Application.DoEvents()
    Dim Milliseconds, Seconds, Minutes, Hours As New Integer

    For Miliseconds = 1 To 1000
        If Miliseconds = 1000 Then
            Seconds += 1
        End If
    Next
    For Seconds = 1 To 59
        If Seconds = 60 Then
            Minutes += 1
        End If
    Next
    For Minutes = 1 To 59
        If Minutes = 60 Then
            Hours += 1
        End If
    Next
    For Hours = 1 To 23
        lblRacingTimer.Text = Hours & "" & ":" & "" & Minutes & "" & ":" & "" & Seconds & "" & ":" & "" & Milliseconds & "" & ":" & "" & ""
    Next

标签: vb.net

解决方案


这是一个开始的实现,您需要添加取消和其他功能。您可以使用 timeSpan 获取经过的小时/分钟/秒/毫秒并正确格式化:

Private Sub Stopwatch(Seconds As Integer)

    Dim startTime As DateTime
    Dim endTime As DateTime
    Dim currentTime As DateTime
    Dim timeSpan As TimeSpan

    startTime = DateTime.Now
    endTime = startTime.AddSeconds(Seconds)
    currentTime = startTime

    Do While currentTime < endTime

        currentTime = DateTime.Now
        timeSpan = currentTime - startTime

    Loop

End Sub

这将使秒表运行 12 小时:

Stopwatch(43200)

推荐阅读