6

描述 我试图创建一个可以扩展的 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

4

2 回答 2

7

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

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

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

于 2010-01-22T17:35:42.393 回答
5

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

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

于 2013-04-15T17:59:06.040 回答