在循环中使用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
答案 0 :(得分:2)
没有故障。
WM_PAINT
邮件已排队,但只有在您离开"离开"功能。
当您显示模式消息框(MsgBox
)时,它的工作原因是因为对话框调用Application.DoEvents,使应用程序能够处理排队的消息。
答案 1 :(得分:1)
问题是标签的文本不会更新,直到sub的结尾。
在Label1.Text = NewDT
行之后,添加Label1.Refresh()
,然后在循环开始之前显示NewDT。
如果您想要更理想的解决方案,可以使用Sleep method。