我需要时间和日期标签尽可能即时显示。
时间和日期标签的显示延迟了两秒钟。
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
'Format time and date labels.
TimeMain.Text = Format(Now, "hh:mm:ss")
DateMain.Text = Format(Now, "dddd, d/MM/yyyy")
End Sub
注意:上面是一个Form_Load子,它只是定义了一个默认的接受按钮。以上是5乘5短的潜艇。
修改
虽然在评论中已经提供了重现问题的步骤,但我已经要求在此重申。此问题中发布的两个代码块之间的唯一区别是,我在默认情况下保留了标签文本,以免再生产者输入任何内容。
将两个标签和一个计时器拖到新表单上,然后使用以下代码:
Public Class Form1
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
'Format time and date labels.
Label1.Text = Format(Now, "hh:mm:ss")
Label2.Text = Format(Now, "dddd, d/MM/yyyy")
End Sub
End Class
对于计时器的属性,Enabled
定义为True
,Interval
定义为1000
。
答案 0 :(得分:1)
我知道这不是一个答案,但这太长了,不适合评论。另请阅读此处以获取有关计时器的更多信息: Why are .NET timers limited to 15 ms resolution? Does the System.Windows.Forms.Timer run on a different thread than the UI?
我理解的计时器已经过去的事件(这可能是错误的)不能保证在时间结束时完全,它更多......把它放入队列中以解雇一旦计时器结束。
想象一下你的应用程序/计时器是从“00:00:01.999”开始的,你的标签是“00:00:01”作为当前时间。
正好1000 MS以后您在“00:00:02.999”并且经过的事件将在“2014-01-01 00:00:03.0045”结束,并且您的标签更新为“2014-01-01 00” :00:03“ - 你已经”迷失“了一秒钟。
你可以尝试将你的间隔设置为 lower 而不是一秒(比如750),这样可以让你看起来更精确。此外,请确保在表单加载时设置计时器标签。我没有和计时器一起工作,我很难找到我之前读过的文章,但你可能需要担心UI锁定取决于所使用的计时器类型(.net框架中显然有4个计时器类。也许其他人可以扩展,但我对winforms了解不多。