C#窗口高度只能变大,不能变小

3
我有一个带可折叠组框的表单(从http://www.codeproject.com/Articles/12835/XP-Style-Collapsible-GroupBox获取)。 我基本上使用它来显示/隐藏表单上的高级选项。 组框本身不是问题,因为我用普通的Panel做了同样的事情,只是更改了Visible属性,问题是一样的:
当我隐藏此框时,希望窗口相应缩小。 因此,当您单击框标题时,我的代码基本上如下:
if (OptionsPanel.IsCollapsed)
    this.Height -= (OptionsPanel.Height - OptionsPanel.CollapsedHeight);
else
    this.Height += (OptionsPanel.Height - OptionsPanel.CollapsedHeight);

问题在于,当您扩展框时,窗口确实会相应地增长,但是当您折叠框时,它并不会缩小。实际上,我所做的任何事情都似乎不能使窗口变小 - 我甚至尝试过硬编码窗口大小,它从未变小,只会变得更大。
是否有什么我错过的使其工作的方法?还是有更好的组件可以正确实现这个功能?老实说,我很震惊工具箱中没有默认控件来做这件事,因为它看起来是一个相当普遍的事情,在许多表单上我都看到过类似的内容。似乎不应该为此去使用第三方插件或自己编写代码。

表单的 AutoSize 属性是否设置为 true?此外,您是否检查了代码在折叠时是否实际调用,例如使用断点或调试打印等? - SimpleVar
代码肯定被执行了。使用断点检查了所有路径。关于AutoSize,请参见下面的响应。不确定为什么它不起作用,但现在我所做的就是禁用该部分而不是隐藏它。这不是我想要的,但现在可能足够了。 - Darrel Hoffman
2个回答

4

请注意,也可以通过属性面板在设计模式下完成此操作。 - SimpleVar
看起来很有前途,但当你隐藏面板时,整个东西都会完全消失,包括使其重新出现的按钮,因此你无法将其打开。如果我能让它仅在高度上自动调整大小,而不是宽度,那么它可能会起作用,但我不确定该如何去做... - Darrel Hoffman
如果按钮在面板外部,则不应该消失。您能否发布主窗口的XAML? - stan
我没有使用XAML - 一切都是在表单设计器中完成的。在这种情况下,按钮是可折叠组框的标题,而不是实际的按钮。(请参见我上面发布的链接 - 这不是我的代码。)我尝试创建一个变为不可见的面板,但是窗体的大小不会发生任何变化,无论是变大还是变小。我只会得到一个空白的空间,它原来所在的位置。 - Darrel Hoffman

3

我不明白在哪里使用了改变大小的光标。当我最大化时,它可以正常增长。但是当我恢复窗口时,它仍然保持最大化的大小,但是窗口却处于恢复状态。因此,在我的情况下,窗口只能增大而不能缩小。 - Totty.js
2
这真的起作用了!在我的情况下,我做了与您的答案完全相反的事情,而且它还有效! :D - Totty.js
@Totty.js 这可能是我在 Stack Overflow 上最喜欢的评论,尤其是因为做相反的事情对我也起了作用。 - Sidney

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接