VB.net - 定时器不更新
我想添加一个正常运行时间计数器,以便从我的应用程序启动它的那一刻起,启动一个定时器,该定时器按秒增加,直到应用程序关闭或停止目的。VB.net - 定时器不更新
当前计时器计数第一秒然后停止。这可能是我不理解滴答功能?我假设为定时器设置的时间间隔将刷新或循环tick子内的代码? (我可以大量错误)。
我有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()
请你能告诉我,我缺少的是什么?谢谢。
您需要在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
此方法不准确,因为刻度事件可能会或可能不会在指定的时间间隔内完全激活。 – dbasnett
的确,我已经通过了其他答案。但问题并不是要求最好的方法,只是问为什么选择的方法不起作用。 – ForkandBeard
如果选择的方法应该提供有意义的数据,即经过的时间,那么它将永远不会工作。我们只能希望有类似需求的人能阅读所有的帖子。 – dbasnett
对于我的应用程序的正常运行时间,我只记录它开始的时间和日期,然后使用一个标签来显示记录时间以来的时间差异。这比运行一直在滴答滴答的时间要简单得多。
在这种情况下,您仍然需要一个计时器来更新标签(除非您将其绑定到另一个常规事件中),但它至少占用更少资源 - 您可以每分钟运行一次,而不是每秒运行一次。 –
给出的方法是非常不准确的。
刻度线事件应该只用于从更精确的时间测量中更新标签。在下面的代码中使用秒表。
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
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
秒是在Tick事件中本地声明的,所以该值将每次通过重新初始化。您的标签只会显示1秒。您可以通过在tick事件代码中放置一个断点并每秒停止一次来确认。 – Jason
好,所以你说这是因为我在tick事件中声明了seconds,minutes和hours字符串,它将不断重新加载?我需要例如在form1_load或其他类中声明这些内容? – Sam
@Sam你可以在全局声明它们(在函数的上面) – Mr47