这是我编写的一个简单代码:
private void button1_Click(object sender, EventArgs e)
{
label1.Text = "first";
Thread.Sleep(1000);
label1.Text = "second";
}
Run Code Online (Sandbox Code Playgroud)
但标签从不显示"第一".我使用断点检查并且语句label1.text ="first"被执行但在标签中没有显示"first",只显示"second".
为什么会这样?
Aph*_*ion 11
那是因为你让主线程睡了.因此,它无法将新文本绘制到标签上.
您可以使用以下命令"强制"处理队列中的(paint)事件:
Application.DoEvents();
Thread.Sleep(1000);
Run Code Online (Sandbox Code Playgroud)
但是请阅读这个问题'使用Application.DoEvents()'