【问题标题】:Cannnot resize Child Controls in a FlowLayoutPanel Control无法在 FlowLayoutPanel 控件中调整子控件的大小
【发布时间】:2010-12-23 01:59:07
【问题描述】:

说明 我试图创建一个可以扩展的 FlowLayoutPanel,例如以水平方式。

FlowLayoutPanel 及其子组件锚点已设置为 Top-Left-Right

FlowLayoutPanel 方向已设置为 TopDown。

-> 调整 FlowLayoutPanel 的大小时,其子组件不会相应地调整大小。

复制步骤

  1. 在表单上创建 FlowLayoutPanel 控件。

  2. 将 FlowLayoutPanel 的 FlowDirection 设置为 TopDown。

  3. 创建一个Button控件,并将其放在FlowLayoutPanel控件中。

  4. 选择 Button 和 FlowLayoutPanel 并将它们的 Anchor 设置为 Top-Left-Right

  5. 尝试横向扩展FlowLayoutPanel。

-> FlowLayoutPanel 已调整大小,但未调整 Button

【问题讨论】:

    标签: resize anchor flowlayoutpanel


    【解决方案1】:

    FlowLayoutPanel 仅用于以动态方式对其子控件进行布局。这并不意味着它们会在 FlowLayoutPanel 中自动调整大小。我猜 FlowLayoutPanel 忽略了它的子控件的 Anchor 属性。

    要实现此效果,您需要在 FlowLayoutPanel 的 SizeChanged 事件上手动调整子控件的大小。

    此时,您可能需要重新考虑 FlowLayoutPanel 是否真的是您想要使用的。如果你知道你总是想要一个按钮来填充 FlowLayoutPanel 的宽度,你不妨将它粘贴在一个 Panel 中并使用锚点,或者设置它的 Dock 属性。

    【讨论】:

      【解决方案2】:

      FlowLayoutPanel 控件根据列中最宽的子控件计算隐含列的宽度。此列中具有 Anchor 或 Dock 属性的所有其他控件都对齐或拉伸以适合此隐含列。对于水平流向,该行为以类似的方式起作用。 FlowLayoutPanel 控件从该行中最高的子控件计算隐含行的高度,并且该行中所有停靠或锚定的子控件都对齐或调整大小以适合隐含行。

      在此处查看 msdn 文档http://msdn.microsoft.com/en-us/library/ms171633.aspx

      【讨论】:

      • 需要有一个像“FlowBreak”这样的选项,它允许您为各个控件设置调整大小选项。我有类似的情况,在整个控件集中有一个特定的面板,我希望始终占据整个宽度,但我仍然希望其他所有内容的自动布局。当前设置我必须选择一个或另一个......我想要两个。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-29
      • 1970-01-01
      • 2010-09-12
      • 1970-01-01
      • 2010-10-20
      • 1970-01-01
      相关资源
      最近更新 更多