【问题标题】:Adding user control to GroupBox changes the user control's layout in WinForms将用户控件添加到 GroupBox 会更改用户控件在 WinForms 中的布局
【发布时间】:2018-10-17 17:41:34
【问题描述】:

我有一个 WinForms 应用程序,其中包含 GroupBox。我设计了一个用户控件,它将一堆文本框和其他控件组合在一起,以便我可以对它们应用一些自定义逻辑。用户控件如下所示:

我想将此用户控件放在我的GroupBox 中,但是这样做最终会影响我的用户控件中控件的布局(见下文)。

如您所见,我的文本框全部展开并根据我想要的方式调整大小。如果我将此控件直接放在主窗体上或Panel(而不是GroupBox)中,则布局会保持不变,但是当我将它放在GroupBox 中时,一切都会变得混乱。有没有办法解决这个问题?

【问题讨论】:

    标签: c# winforms user-controls


    【解决方案1】:

    在这两种情况下,用户控件的大小似乎不同。确保它在组框中的大小与直接放在表单上时的大小相同。如果您使用过像 FlowLayoutPanelTableLayoutPanel 这样的布局控件,这可能很重要。

    还要注意,如果未明确设置,winforms 控件会从其父级继承属性。例如,如果您没有设置用户控件及其文本框的字体属性,则将从组框中获取这些属性。

    【讨论】:

    • 我看你是对的,当我将用户控件放在 GroupBox 中时,它会自动调整大小。不幸的是,它不允许我更正尺寸,使其与我直接放在表格上时的尺寸相同。这可能是由于我需要设置的 GroupBox 的属性吗?
    • 您可以在GroupBox上启用AutoSize并将AutoSizeMode设置为GrowAndShrink。这将允许它扩展以容纳其内容,但这只会将大小问题进一步推到控制树上。任何持有 GroupBox 的东西都需要一个最小尺寸,这样它就不会压碎 GroupBox。
    • @LeeHiles 这是一种选择,但是,与其让 GroupBox 调整大小以适应用户控件的新大小,我宁愿让用户控件在放置时不会自行调整大小组框
    • 很难给你详细的建议,因为我们不知道用户控件是如何构造的。这在很大程度上取决于用户控件中控件的AnchorDock 属性的设置,以及它们是否嵌入到某些影响布局的容器控件中。
    【解决方案2】:

    最终为我工作的是创建一个单独的类MyGroupBox,它扩展了GroupBox。该类是空的,但是我将表单上的GroupBox 转换为这个并将用户控件放入其中,从而解决了问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-08
      • 1970-01-01
      • 1970-01-01
      • 2018-08-17
      • 1970-01-01
      • 1970-01-01
      • 2016-08-02
      相关资源
      最近更新 更多