Winforms Can';t使流布局面板在为空时消失
我有一个自定义的Windows窗体(一个扩展了Winforms Can';t使流布局面板在为空时消失,winforms,layout,flowlayoutpanel,Winforms,Layout,Flowlayoutpanel,我有一个自定义的Windows窗体(一个扩展了System.Windows.Forms)的类)。其布局如下: FLP:流程布局面板。在名称中指定了流向 PB:图片框 RTB:RichTextBox b:按钮 问题:底部的FLP可能为空(无按钮)。当这种情况发生时,我希望它收缩到零高度,让上面的FLP和RTB增长并填充该空间。这是因为当没有按钮时,所有的空白空间看起来都很丑陋。 我用AutoSize=True和AutoSize=growtandshrink配置了较低的flp。然后,对于上层fl
System.Windows.Forms
)的类)。其布局如下:
- FLP:流程布局面板。在名称中指定了流向
- PB:图片框
- RTB:RichTextBox
- b:按钮
问题:底部的FLP可能为空(无按钮)。当这种情况发生时,我希望它收缩到零高度,让上面的FLP和RTB增长并填充该空间。这是因为当没有按钮时,所有的空白空间看起来都很丑陋。
我用
和AutoSize=True
配置了较低的flp。然后,对于上层flp,我设置了AutoSize=growtandshrink
,AutoSize=True
和AutoSizeMode=growtonly
。但是当我创建一个没有按钮的表单时,空间仍然存在。如果我画控制边界,在较低的flp应该在的地方,我会看到一个小方点。 我哪里做错了Dock=Fill
更新:我愿意以更方便的方式重做布局,甚至可以使用WPF重做整个表单。我看起来不需要自顶向下的FlowLayoutPanel 尝试使用左右FlowLayoutPanel并将其固定到底部。然后将左右FlowLayoutPanel停靠在剩余区域
如果按钮面板没有可见的按钮,则可以隐藏面板,填充的面板将占用剩余的空间。如果删除
FLP\u top\u down
,将flp\u left\u改为\u right
成为.Dock=DockStyle.Fill
并将flp\u left\u改为\u right
成为.Dock=DockStyle.Bottom
,你应该得到你想要的东西。这确实会使上一个flp在下一个flp为空时填充表单,但是我不能让RTB一直增长到底部,即使它停靠在底部(如果答案不是琐碎的话,这可能需要一个单独的问题)。@dario_ramos根据你的示意图,RTB不应该停靠在底部。它应该是停靠填充(如果PB停靠在左侧)或停靠在右侧。或者,您可以删除停靠样式,只在所有侧面固定RTB。