suspendlayout和resumayout的区别
本文关键字:区别 resumayout suspendlayout | 更新日期: 2023-09-27 18:01:25
我读了下面的线程为什么使用suspendLayout。所以我想我应该创造一个小的例子来证明我的概念。但是,这行不通。我只看到"第二部分完成了"。
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();
}
你已经阻止了UI线程执行Thread.Sleep()
(例如处理WM_SETTEXT消息),因此它不能更新UI到显示 "Part 1 completed"。它只有在UI线程恢复后才能够刷新自己,到那时你已经要求它显示"Part 2 completed"
如果您想模拟更改文本框值之间的一段时间,您可以使用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();
}