.net FlowLayoutPanel能否自动适应可调整大小的面板?

.net FlowLayoutPanel能否自动适应可调整大小的面板?,.net,winforms,flowlayoutpanel,.net,Winforms,Flowlayoutpanel,我正在尝试创建一个表单,我可以很容易地将其描述为一个类似于浏览器视图的表单,其中两个面板并排显示在左侧的文件夹列表中,所选文件夹中的文件显示在右侧 左侧面板的宽度固定,停靠在窗体的左侧。它工作正常,在这里不相关 右侧面板位于左侧面板的右侧,填充表单的其余部分,并锚定顶部、左侧、底部和右侧,以便在表单调整大小时,它继续占据整个表单,左侧面板占据的部分除外。它还将AutoScroll设置为True,这样每当内容太大而无法容纳时,它都会自动显示滚动条。那部分也很好 因为我想在不同的时间在右侧面板中显示

我正在尝试创建一个表单,我可以很容易地将其描述为一个类似于浏览器视图的表单,其中两个面板并排显示在左侧的文件夹列表中,所选文件夹中的文件显示在右侧

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

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

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

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

我本以为这正是FlowLayoutPanel设计的目的,但我无法让它工作![我将FlowLayoutPanel的Dock属性设置为Fill,以便它使用父面板中的所有可用空间。]实际情况是,它只在一行中显示所有图标,而从不包装它们。由于FlowLayoutPanel不适合,因此在父面板上出现了一个水平滚动条

我认为这可能是因为包含FlowLayoutPanel的父面板没有固定的大小,因为它会随着表单的增长和收缩,所以我猜当FlowLayoutPanel决定它可以承受多大的宽度时,它决定它可以随心所欲地宽。然而,这不是很有帮助


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

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


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

WrapContents已启用。我需要打开自动滚动,因为如果高度太大,我需要能够滚动。此外,用户可能会调整表单的大小,使一列图标不再适合。所以我也需要水平滚动。注意:我发现了一个似乎有效的方法-我覆盖FlowLayoutPanel的MaximumSize属性,并返回父面板的当前宽度加上无限高。这似乎很管用,不过我必须再做一个特技,让滚动条在父面板上正常工作-每次调整窗体大小时,我都需要重置AutoScrollMinimumSize,因为表单/父级大小的更改意味着内部FlowLayoutPanel的尺寸可能会由于重新流动而发生很大变化。