Vb.net DateTime.AddSeconds赢得';标签上没有显示
在循环中使用DateTime.AddSeconds命令时,我遇到了一个奇怪的故障。Label1应该在循环开始之前显示“NewDT”,但由于某些原因它没有显示。有趣的是,当在循环上方添加Messagebox时,标签也会显示我想要的内容Vb.net DateTime.AddSeconds赢得';标签上没有显示,vb.net,Vb.net,在循环中使用DateTime.AddSeconds命令时,我遇到了一个奇怪的故障。Label1应该在循环开始之前显示“NewDT”,但由于某些原因它没有显示。有趣的是,当在循环上方添加Messagebox时,标签也会显示我想要的内容 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim Dt As DateTime =
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Dt As DateTime = Now() 'It shows current datetime
Dim NewDT As DateTime = Now()
NewDT = NewDT.AddSeconds(10) 'It adds 10 seconds too the current datetime.
Label1.Text = NewDT
Do While NewDT.Second > DateTime.Now.Second 'Loops until system time matches NewDT
Loop
MsgBox("done")
End Sub
问题是标签的文本在子标签结束之前不会更新。 在
Label1.Text=NewDT
行之后,添加Label1.Refresh()
,然后在循环开始之前显示NewDT
如果您想要更理想的解决方案,可以使用。没有故障
WM_PAINT
消息已排队,但仅在“离开”函数后处理
当您显示模式消息框(
MsgBox
)时,它工作的原因是对话框调用使应用程序能够处理排队消息。代码在没有MsgBox的情况下可以正常工作。试试这个Label1.Text=NewDT.ToString
a)你的循环是在比较秒,而不是时间;b) 在你的循环中没有任何东西。如果要更改标签,则必须在表单更新之前完成循环。使用label1.Refresh
强制更新。使其正常工作。谢谢我只是用循环让程序等到时间匹配。我知道这并不理想。有更好的解决方案吗?NewDT
现在开始+10秒,如果你真的比较时间,就永远不会执行。非常感谢!很好用!埃米纳姆帮了我一把,今天再好不过了;)