我有一个布局控件的表单分为左,中,右三个部分。默认情况下,隐藏正确的布局控件项(具有几个网格)。表单中有一个按钮,将表单向右展开以显示两个网格。再次单击该按钮时,它会隐藏正确的布局控件项并再次更改窗体的大小。基本功能工作正常,但我想在用户按下按钮时更新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。知道为什么吗?
答案 0 :(得分:2)
这是非常简单的功能。
请考虑在执行以下行后检查此属性的更改(以及与布局相关的任何其他内容):
this.ResumeLayout();
原因是 - SuspendLayout()
暂停对控件布局的所有更改,以提高应用程序的性能。
如果属性仍然没有改变,你很可能会在其他地方覆盖它(设置宽度为1100)