0

我有一个布局控件的表单,它分为左、中、右三部分。默认情况下,右侧的布局控件项(有几个网格)是隐藏的。表单中有一个按钮,可将表单向右展开以显示两个网格。当您再次单击该按钮时,它会隐藏右侧的布局控件项并再次更改表单的大小。基本功能运行良好,但我还想在用户按下按钮时更新 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。知道为什么吗?

4

1 回答 1

2

这是一个非常简单的功能。

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

  this.ResumeLayout();

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

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

于 2012-12-21T15:45:03.037 回答