C# suspendlayout和resumelayout之间的区别
所以我读了下面的帖子。所以我想我会创建一个小例子,给我概念的证明。但是,它不起作用。我只看到“第二部分完成”。请告知C# suspendlayout和resumelayout之间的区别,c#,winforms,C#,Winforms,所以我读了下面的帖子。所以我想我会创建一个小例子,给我概念的证明。但是,它不起作用。我只看到“第二部分完成”。请告知 private void button1_Click(object sender, EventArgs e) { this.SuspendLayout(); lblStatus.Text = "Part 1 completed"; this.ResumeLayout(); System.Thread
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以显示“第1部分已完成”。它只能在UI线程恢复后刷新自身,此时您已要求它显示“第2部分已完成”
如果要模拟更改文本框值之间的一段时间,可以使用计时器
。例如:
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();
}
但是我在睡觉前设置了标签?设置标签实际上是向控件发送一条消息——如果您阻止UI线程(使用
thread.sleep
),它将无法处理该消息(WM_SETTEXT)有没有办法完成我上面尝试的操作?