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

Resizing user control that is docked in Panel control does not resize Panel control - better solution?

我有一个有两个大小选项的用户控件(用户控件中有一个按钮,用于在两个选项之间切换)- 类似于部分 - collapsed/expanded.

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

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

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

但这不应该自动工作(正如我上面提到的)吗?如果不是,那么为什么更改用户控件的大小不会触发容器控件的 SizeChanged 事件?

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

请记住,不断变化的面板尺寸往往会给您带来更多 window 其余部分的布局问题,可能需要将内容移开以提供 space。 FlowLayoutPanel 往往是下一个选择。或者当自动布局无法处理时面板的 SizeChanged 事件。