Form的MinimumSize无法正确更新

时间:2012-12-21 15:13:44

标签: c# .net winforms forms size

我有一个布局控件的表单分为左,中,右三个部分。默认情况下,隐藏正确的布局控件项(具有几个网格)。表单中有一个按钮,将表单向右展开以显示两个网格。再次单击该按钮时,它会隐藏正确的布局控件项并再次更改窗体的大小。基本功能工作正常,但我想在用户按下按钮时更新MinimumSize(因此在扩展表单时,应增加最小宽度)。这是我目前的代码:

private void btnExpand_Click(object sender, EventArgs e)
    {
        this.SuspendLayout( );
        switch (lciRight.Visibility)
        {
            case LayoutVisibility.Never:
                LoadGrids();
                lciRight.Visibility = LayoutVisibility.Always;
                this.Width += lciRight.Width;
                this.MinimumSize = new Size(this.Width, this.MinimumSize.Height);
                btnExpand.Text = "<<";
                break;
            case LayoutVisibility.Always:
                lciRight.Visibility = LayoutVisibility.Never;
                this.MinimumSize = new Size(689, this.MinimumSize.Height);
                this.Width -= lciRight.Width;
                btnExpand.Text = ">>";
                break;
            default:
                break;
        }
        this.ResumeLayout();
    }

我遇到的问题是,当表单已经展开并且我们点击按钮使其再次成为原始尺寸时,

  

this.MinimumSize = new Size(689,this.MinimumSize.Height);

行未正确更新MinimumSize。知道为什么吗?

1 个答案:

答案 0 :(得分:2)

这是非常简单的功能。

请考虑在执行以下行后检查此属性的更改(以及与布局相关的任何其他内容):

  this.ResumeLayout();

原因是 - SuspendLayout()暂停对控件布局的所有更改,以提高应用程序的性能。

如果属性仍然没有改变,你很可能会在其他地方覆盖它(设置宽度为1100)