Vb.net DateTime.AddSeconds赢得';标签上没有显示

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 =

在循环中使用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 = 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秒,如果你真的比较时间,就永远不会执行。非常感谢!很好用!埃米纳姆帮了我一把,今天再好不过了;)