调整Panel控件中停靠的用户控件的大小不会调整Panel控件的大小 - 更好的解决方案?

时间:2015-06-27 08:12:56

标签: c# winforms user-controls

我有一个用户控件,有两个大小选项(用户控件中有一个按钮,可以在两个选项之间切换) - 类似于部分 - 折叠/展开。

此用户控件放置在Panel控件上并停靠以填充它。

我需要根据用户控件的大小重新调整此面板的大小。我预计它会自动发生,因为用户控件已停靠以填充Panel,但Panel的SizeChanged事件未被触发。

所以我的解决方案是以容器形式为用户控件和事件处理程序设置事件SizeChanged,相应地调整Panel的大小。

但是这不应该自动工作(如上所述)?如果没有,那么为什么更改用户控件的大小不会触发容器控件的SizeChanged事件?

1 个答案:

答案 0 :(得分:3)

好吧,你不想要Dock,因为这会强制控件的大小与面板大小相匹配。换句话说,您需要将面板的AutoSize属性设置为True,将AutoSizeMode设置为GrowAndShrink。并使用Padding或控件的Margin来调整并使面板更大一些。

请记住,更改面板尺寸往往会给窗口的其余部分带来更多布局问题,可能需要移动一些东西来提供空间。 FlowLayoutPanel往往是下一个选择。或者当自动布局无法解决时,面板的SizeChanged事件。