C# 窗口高度只会变大,不会变小
Posted
技术标签:
【中文标题】C# 窗口高度只会变大,不会变小【英文标题】:C# window height only gets bigger, not smaller 【发布时间】:2012-05-27 01:07:17 【问题描述】:我有一个带有可折叠组框的表单(从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);
问题是 - 当您展开框时,窗口确实会相应地增长,但是当您折叠框时,它不会缩小。事实上,我所做的一切似乎都无法让窗口变小——我什至尝试过硬编码窗口大小,但它永远不会变小,只会变大。
我是否缺少一些东西来完成这项工作?还是有更好的组件可以做到这一点?老实说,我很震惊工具箱中没有用于执行此类操作的默认控件,因为这似乎是相当常见的事情,而且我在很多表单上都看到过类似的事情。似乎不是那种你应该去 3rd 方插件或滚动你自己的代码的事情。
【问题讨论】:
AutoSize
属性是否设置为true
?另外,您是否检查过代码在折叠、使用断点或调试打印等时实际被调用?
代码肯定达到了。检查所有带有断点的路径。至于 AutoSize,请参阅下面的回复。不知道为什么它不起作用,但我现在正在做的只是禁用该部分而不是隐藏它。不是我想要的,但现在可能就足够了。
【参考方案1】:
您是否尝试添加 AutoSizeMode=GrowAndShrink 属性?
最好同时 AutoSize=true, AutoSizeMode=GrowAndShrink
在 C# 中
OptionsPanel.AutoSize = true;
OptionsPanel.AutoSizeMode = AutoSizeMode.GrowAndShrink;
参考:http://msdn.microsoft.com/en-us/library/system.windows.forms.autosizemode.aspx
【讨论】:
请注意,这也可以通过属性面板在设计模式下完成。 看起来很有希望,但是当你隐藏面板时,这会让整个事情完全消失,包括让它重新出现的按钮,所以你不能让它重新打开。如果我可以让它只在高度而不是宽度上自动调整大小,它可能会起作用,但我不知道该怎么做...... 如果按钮在面板之外,那么它不应该消失。您可以发布主窗口 XAML 吗? 我没有使用 XAML - 这一切都在表单设计器中完成。在这种情况下,按钮是可折叠组框的标题,而不是实际按钮。 (请参阅我上面发布的链接 - 这不是我的代码。)我尝试制作一个不可见的面板,但随后表单根本不会改变大小,无论是更大或更小。我只是在原来的地方得到一个空白。【参考方案2】:确保您的表单的AutoSize
设置为True,AutoSizeMode
设置为GrowAndShrink
默认为GrowOnly
【讨论】:
好吧,我没有得到调整大小的光标。当我最大化时,它会变好。当我恢复时,它会保持最大化的大小,但窗口会恢复。因此,窗口只能在我的情况下增长.. 这确实有效! ***.com/questions/3571041/… 在我的情况下,我的回答与您的回答完全相反并且有效! :D @Totty.js 这可能是我一直以来最喜欢的关于堆栈溢出的评论,特别是因为我也可以做完全相反的事情。以上是关于C# 窗口高度只会变大,不会变小的主要内容,如果未能解决你的问题,请参考以下文章
Qt designer 怎样使用 layout 控制布局, 可以实现 随着窗口的拉大拉小,部件也随着变大变小啊。。