解决.NET程序中同一按钮单击事件中多次刷新Label时只有最后一次赋值生效的问题

原创
2016/07/07 15:39
阅读数 262

简单描述一下问题,即我建立了一个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

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部