1

我正在尝试创建一个表单,我可以最轻松地将其描述为像资源管理器视图一样,并排有两个面板(左侧是文件夹列表,右侧显示所选文件夹中的文件)。

左侧面板是固定宽度的,并停靠在表单的左侧。它工作正常,在这里不相关。

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

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

我(有时)想要在右侧面板中显示的一件事是非常类似于资源管理器中的“图标”视图 - 即一堆文件图标,这FlowLayoutPanel听起来很完美,因为我确实希望它们从左到右排列,然后根据需要换行到新行。

我原以为这正是 aFlowLayoutPanel的设计目的,但我无法让它工作![我将 的Dock属性设置为FlowLayoutPanelFill以便它使用父级中的所有可用空间Panel。]实际发生的是它只在一行中显示所有图标,而从不包装它们。我最终在父级上有一个水平滚动条,Panel因为FlowLayoutPanel它不适合。

我认为这可能是因为Panel包含的父FlowLayoutPanel级没有固定的大小(因为它会随表单增长和缩小),所以我猜当FlowLayoutPanel决定它可以承受的宽度时,它决定它可以是随心所欲。但是,这不是很有帮助。

有什么办法可以说服FlowLayoutPanel它应该只和它的父级一样宽Panel

4

1 回答 1

0

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

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

于 2012-07-26T00:05:45.647 回答