隐藏控件而不留空 space

Hide a control without leaving empty space

我有一个主要基于 DevExpress Windows Forms 套件的 WinForms 项目。我正在开发如下所示的控件:

我使用术语 programme 来区分针对人的培训计划,program 表示计算机程序。在图像中有 3 ProgrammeGroup 个用户控件。每个都有一个 header,有 2 个组合,在其下方,一个 ProgrammeDetail 用户控件,带有程序详细信息。

当左上组合显示值为空白时,程序详细信息必须可见,否则不可见。当使 ProgrammeDetail 控件不可见时,我还将其 Height 设置为零,并且外部 ProgrammeGroup 控件在 auto-size 上缩小。

但是,如果我将中间 ProgrammeGroup 的 Yes/No 组合设置为 No,那 ProgrammeGroup 缩小,但在 header 只有中间控件和底部控件之间留下间隙。此间隙在下图中可见:

我如何布置我的 ProgrammeGroup 控件,以便如果一个控件的高度缩小,它下面的所有控件都会向上移动,这意味着没有空隙。我希望 DevExpress WinForms 套件中的许多不同面板之一可以帮助我做到这一点,但我很难找到一个。

此问题的解决方案是使用 FlowLayoutPanel,它会自动将其中的控件彼此对齐。

调整子控件大小和位置的最佳方法是将它们放在 LayoutControl. This control is specially designed for such tasks. To hide unnecessary layout items/groups, use the BaseLayoutItem.Visibility 属性 上。

我还应该注意到 LayoutControl 是灵活的并且支持不同的模式,包括 Flow Layout Mode

另请参阅:

Customization Form