VB.net - 计时器没有更新

时间:2013-10-16 09:24:21

标签: vb.net timer

我正在尝试添加正常运行时间计数器,以便从我的应用程序启动时起,它会启动一个计时器,该计时器会递增第二个直到应用程序关闭或我故意停止它。

目前计时器计算第一秒然后停止。这可能是我不理解滴答功能?我假设我为计时器设置的间隔将刷新或循环tick子程序中的代码? (我可能大错了。)

我有计时器1,我将其设置为"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()

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

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

给出的方法非常不准确,因为它们假设tick事件在指定的时间间隔内完全触发,并且不会发生。

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

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

答案 2 :(得分: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