0

我正在尝试添加一个正常运行时间计数器,以便从我的应用程序启动的那一刻开始,它会启动一个以秒为单位递增的计时器,直到应用程序关闭或我故意停止它。

目前,计时器计数第一秒,然后停止。这可能是我不了解刻度功能?我假设我为计时器设置的间隔将刷新或循环滴答子内的代码?(我会大错特错吗)。

我有 timer1,我已将其设置"Enabled""1000"一秒钟。

在我的Timer1_Tick Sub我有这个:

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    Dim seconds, minutes, hours As Integer
    If seconds = 60 Then
        seconds = 0
        minutes = minutes + 1
    End If

    If minutes = 60 Then
        If seconds = 60 Then
            seconds = 0
            minutes = 0
            hours = hours + 1
        End If
    End If
    seconds = seconds + 1
    Label44.Text = Format(hours, "00") & "." & Format(minutes, "00") & "." & Format(seconds, "00")
End Sub

Form1_Load我有Timer1.Start()

请你能告诉我我错过了什么吗?谢谢。

4

3 回答 3

3

对于我的应用程序的正常运行时间,我只记录它开始的时间和日期,然后使用标签显示自记录时间以来的时间差异。这比一直运行时间要简单得多。

于 2013-10-16T09:50:05.397 回答
3

给出的方法非常不准确,因为它们假设滴答事件恰好在指定的时间间隔触发,而这并没有发生。

滴答事件应仅用于根据更精确的时间测量来更新标签。在下面的代码中使用了秒表。

Dim appruntime As Stopwatch = Stopwatch.StartNew

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    Label1.Text = appruntime.Elapsed.ToString("d\ hh\:mm\:ss")
End Sub
于 2013-10-16T11:55:19.670 回答
1

您需要在Form1.

Public Class Form1

    Private seconds, minutes, hours As Integer

    Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick    
        If seconds = 60 Then
            seconds = 0
            minutes = minutes + 1
        End If

        If minutes = 60 Then
            If seconds = 60 Then
                seconds = 0
                minutes = 0
                hours = hours + 1
            End If
        End If
        seconds = seconds + 1
        Label44.Text = Format(hours, "00") & "." & Format(minutes, "00") & "." & Format(seconds, "00")
    End Sub
End Class
于 2013-10-16T09:57:45.097 回答