【问题标题】:Properly placing user controls on FlowLayoutPanel在 FlowLayoutPanel 上正确放置用户控件
【发布时间】:2016-08-16 08:51:36
【问题描述】:

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

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

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 中添加这些文件。这也打破了这种方式。

如何解决?

【问题讨论】:

    标签: c# .net winforms user-controls


    【解决方案1】:

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

    如果你想避免剪裁并使用分组框大小,你应该将UserControl.AutoSize属性设置为true,将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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-03
      • 1970-01-01
      • 1970-01-01
      • 2011-06-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多