在 FlowLayoutPanel 上正确放置用户控件

Properly placing user controls on FlowLayoutPanel

我正在使用 WinForms C# .NET 3.5 桌面软件。

我正在尝试添加一个 UserControl,它只包含一个 GroupBox 在一个 FlowLayoutPanel 中。当我尝试以下代码时:

GroupBox gb = new GroupBox();

flowLayoutPanelConfig.Controls.Add(gb);
flowLayoutPanelConfig.SetFlowBreak(gb, true);

GroupBox 显示得很漂亮:

但是当我尝试将 GroupBox 放入 UserControl 中时:

GroupBox gb = new GroupBox();
UserControl uc = new UserControl();
uc.Controls.Add(gb);

flowLayoutPanelConfig.Controls.Add(uc);
flowLayoutPanelConfig.SetFlowBreak(uc, true);

并尝试显示 UserControl,GroupBox 中断:

这是为什么?

这是测试代码。我在一些单独的文件中有一个用户控件,我需要在 FlowLayoutPanel 中添加这些文件。这也打破了这种方式。

如何解决?

可能需要一个更真实的例子。这实际上取决于 UserControl 是否是预先设计的,因此在设计时设置了正确的大小,在这种情况下它会正确显示。您显示的运行时示例中的问题是用户控件的默认大小与组框大小不同,因此会剪裁子组框。

如果你想避免裁剪并使用组框大小,你应该将UserControl.AutoSize property to true and UserControl.AutoSizeMode设置为AutoSizeMode.GrowAndShrink:

GroupBox gb = new GroupBox();
UserControl uc = new UserControl();
uc.AutoSize = true;
uc.AutoSizeMode = AutoSizeMode.GrowAndShrink;
uc.Controls.Add(gb);

flowLayoutPanelConfig.Controls.Add(uc);
flowLayoutPanelConfig.SetFlowBreak(uc, true);