DateTime.AddSeconds不会在标签上显示

时间:2014-08-31 14:48:52

标签: 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 = 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

2 个答案:

答案 0 :(得分:2)

没有故障。

WM_PAINT邮件已排队,但只有在您离开"离开"功能。

当您显示模式消息框(MsgBox)时,它的工作原因是因为对话框调用Application.DoEvents,使应用程序能够处理排队的消息。

答案 1 :(得分:1)

问题是标签的文本不会更新,直到sub的结尾。 在Label1.Text = NewDT行之后,添加Label1.Refresh(),然后在循环开始之前显示NewDT。

如果您想要更理想的解决方案,可以使用Sleep method