suspendlayout和resumelayout之间的区别

时间:2013-02-28 03:44:39

标签: c# winforms

所以我读了下面的帖子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();            
    }

1 个答案:

答案 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();
}