简单描述一下问题,即我建立了一个Winform工程,有一个窗体FormMain,其中有一个Label(lblTest)和一个Button(btnRefreshLabel),如下图所示:
其中单击按钮后会执行以下代码:
private void btnRefreshLabel_Click(object sender, EventArgs e)
{
this.lblTest.Text = "加载中……\n" + DateTime.Now.ToString();
System.Threading.Thread.Sleep(3000);
this.lblTest.Text = "加载完毕\n" + DateTime.Now.ToString();
}
先更新Label的文字到“加载中”,执行完一段3000毫秒的代码后,将Label的文字设置为“加载完毕”。不过这样写有一个问题,就是这段代码中的“加载中”永远也不会显示出来,点击按钮后,屏幕会卡死3秒钟,然后直接刷出“加载完毕”。后来研究了下,这个问题的解决方法就是在每次更新Label的内容后立即执行一次Refresh函数:
private void btnRefreshLabel_Click(object sender, EventArgs e)
{
this.lblTest.Text = "加载中……\n" + DateTime.Now.ToString();
this.Refresh(); //添加了这句话
System.Threading.Thread.Sleep(3000);
this.lblTest.Text = "加载完毕\n" + DateTime.Now.ToString();
}
程序运行截图如下:
1)单击按钮后,Label显示“加载中”。
2)三秒后,Label显示“加载完毕”。
END