C# 如何将Sytem.Windows.Form的高度限制为精确值?

C# 如何将Sytem.Windows.Form的高度限制为精确值?,c#,winforms,C#,Winforms,我试图实现的是一个窗体,它上面有一个按钮,可以使窗体“下拉”并变大,显示更多信息。我目前的尝试是: private void btnExpand_Click(object sender, EventArgs e) { if (btnExpand.Text == ">") { btnExpand.Text = "<"; _expanded = true; this.MinimumSize = new Size(1, 300

我试图实现的是一个窗体,它上面有一个按钮,可以使窗体“下拉”并变大,显示更多信息。我目前的尝试是:

private void btnExpand_Click(object sender, EventArgs e)
{
    if (btnExpand.Text == ">")
    {
        btnExpand.Text = "<";
        _expanded = true;
        this.MinimumSize = new Size(1, 300);
        this.MaximumSize = new Size(int.MaxValue, 300);
    }
    else
    {
        btnExpand.Text = ">";
        _expanded = false;
        this.MinimumSize = new Size(1, 104);
        this.MaximumSize = new Size(int.MaxValue, 104);
    }
}
private void btnExpand\u单击(对象发送者,事件参数e)
{
如果(btnExpand.Text==“>”)
{
btnExpand.Text=“”;
_扩展=假;
this.MinimumSize=新尺寸(1104);
this.MaximumSize=新大小(int.MaxValue,104);
}
}
太棒了!除了一个小细节。。。请注意,宽度值应该能够从1变为int.MaxValue?实际上,它们从.Width变为int.MaxValue,也就是说,你可以使表单变大,但不能再变小。我不知道为什么会发生这种情况。有人有什么想法吗

作为记录:我还尝试了一个Form.Resize处理程序,它根据布尔值扩展的设置将表单的高度设置为相同的值,但我最终得到了相同的副作用

PS:我正在VisualStudio2008中使用.NET3.5。其他解决方案是受欢迎的,但这是我关于如何“应该”做以及如何尝试做的想法


编辑:根据接受的回答,代码似乎有效。如果其他人对此特定问题有问题,请检查表单的AutoSize属性,该属性应为FALSE,而不是TRUE。(这是默认设置,但我在使用表单时打开了它,并且在前面显示调试信息时也打开了autosize标签)

根据文档,使用0表示没有最大或最小大小。我刚试过,它一点也不喜欢0。所以我像你一样使用int.MaxValue,它很有效。您使用的框架版本是什么?

根据文档,使用0表示并没有最大或最小大小。我刚试过,它一点也不喜欢0。所以我像你一样使用int.MaxValue,它很有效。您使用的框架的哪个版本?

实际上,看看reflector中的
MinimumSize
maxiumSize
(.NET 3.5),很明显,设计的行为和文档中建议的不太一样。辅助对象类确定了一些最小宽度约束,0没有特殊意义(即没有限制)


另一个注意事项是,我在上面的代码中看到,您正在根据按钮的文本值进行扩展或收缩,如果稍后有人出现并在设计器中更改文本为“扩展”,则这是一个坏主意与其不看你的代码,它会产生意想不到的副作用,也许你在某个地方有一些更改按钮文本的代码,不如在某个地方有一个状态变量并打开它。

事实上,看看
最小值
最大值
(.NET 3.5)在reflector中,很明显,设计的行为与文档建议的不完全相同。有一些最小宽度约束是由helper类确定的,0没有特殊意义(即没有限制)


另一个注意事项是,我在上面的代码中看到,您正在根据按钮的文本值进行扩展或收缩,如果稍后有人出现并在设计器中更改文本为“扩展”,则这是一个坏主意与其<不看你的代码,它会产生意想不到的副作用,也许你在某个地方有一些更改按钮文本的代码,不如在某个地方有一个状态变量并打开它。

出于某种原因,表单上的AutoSize设置为true,这会干扰MaximumSize和MinimumSize、 …嗯。哦,好吧。无论如何谢谢:)作为一个额外的旁注,我相信这意味着使用ie。新尺寸(0,0)表示没有最小值/最大值,但我不认为代码设计用于处理单个0值。很遗憾,但你已经做到了。出于某种原因,表单上的AutoSize设置为true,这会干扰MaximumSize和MinimumSize…嗯。哦,好吧。无论如何,谢谢:)作为额外的旁注,我相信这意味着使用ie。新大小(0,0)表示没有最小值/最大值,但我不认为代码设计用于处理单个0值。遗憾的是,你已经做到了。事实上已经有了一个状态变量,这只会突出这一点。谢谢但是,当他们开始点击按钮时,他们仍然需要查看我的代码,这会把他们自己对按钮文本的更改搞砸。事实上,已经有一个状态变量,这只会突出显示这一点。谢谢但当他们开始点击按钮时,他们仍然需要查看我的代码,这会把他们自己对按钮文本的更改搞砸。