FlowLayoutPanel可以自动适应可调整大小的面板吗?

时间:2012-07-25 23:59:28

标签: .net winforms flowlayoutpanel

我正在尝试创建一个我最容易描述为像资源管理器视图的表单,并排放置两个面板(左侧是文件夹列表,右侧显示所选文件夹中的文件) )。

左侧面板是固定宽度的,并且停靠在表单的左侧。它工作正常,与此无关。

右侧面板位于左侧面板的右侧,填充表格的其余部分,并固定顶部,左侧,底部和底部。这样,当表格调整大小时,它会继续占据整个表格,但左侧面板占用的部分除外。它还将AutoScroll设置为True,以便每当内容太大而无法容纳时,它会自动显示滚动条。那部分也可以。

因为我想在不同时间在右侧面板中显示不同的内容,所以我创建了一个普通的Panel作为容器,并且正在为每种不同类型的内容使用子面板。任何时候都只能看到其中一个子面板。

我(有时)想要在右侧面板中显示的一个东西非常类似于资源管理器中的“图标”视图 - 即一堆文件图标,为此FlowLayoutPanel个声音完美,因为我希望它们从左到右排列,然后根据需要包装到新行。

我原本以为这正是FlowLayoutPanel的设计目标,但我无法让它发挥作用! [我将Dock的{​​{1}}属性设置为FlowLayoutPanel,以便它使用父Fill中的所有可用空间。]实际发生的是它只显示所有单行中的图标,永远不会包装它们。我最终在父Panel上使用了水平滚动条,因为Panel不合适。

我认为这可能是因为包含FlowLayoutPanel的父Panel没有固定的大小(因为它会随着表单的增长而缩小),所以我想FlowLayoutPanel 1}}决定它可以承受多大的宽度,它决定它可以像它喜欢的那样宽。但是,这不是很有帮助。

我有没有办法说服FlowLayoutPanel它应该只与其父FlowLayoutPanel一样宽?

1 个答案:

答案 0 :(得分:0)

首先确保启用了FLP的WrapContents选项。

如果您已经这样做了,我的猜测是启用FLP的父面板AutoScroll选项是原因。这与FLP的所需包装行为不兼容。 FLP不会换行,除非它不能适合一行上的所有内容。通过允许其父面板滚动,FLP将始终能够适应一行中的所有内容。关闭父面板的AutoScroll,它应该可以正常工作。