所以我读了下面的帖子Why use suspendLayout。所以我想我会创建一个给我概念证明的小例子。但是,它不起作用。我只看到“第2部分已完成”。请指教。
private void button1_Click(object sender, EventArgs e)
{
this.SuspendLayout();
lblStatus.Text = "Part 1 completed";
this.ResumeLayout();
System.Threading.Thread.Sleep(5000);
this.SuspendLayout();
lblStatus.Text = "Part 2 completed";
this.ResumeLayout();
}
答案 0 :(得分:1)
您已阻止UI线程执行Thread.Sleep()
(例如处理WM_SETTEXT消息),因此无法将UI更新为 show “Part 1 completed”。它只能在UI线程恢复后自行刷新,到那时你已经要求它显示“第2部分已完成”
如果您想模拟更改文本框值之间的一段时间,可以使用Timer
。例如:
private void button1_Click(object sender, EventArgs e)
{
this.SuspendLayout();
label1.Text = "Part 1 completed";
this.ResumeLayout();
timer.Interval = 5000;
timer.Start();
}
private void timer_Tick(object sender, EventArgs e)
{
timer.Stop();
this.SuspendLayout();
label1.Text = "Part 2 completed";
this.ResumeLayout();
}