Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winforms Can';t使流布局面板在为空时消失_Winforms_Layout_Flowlayoutpanel - Fatal编程技术网

Winforms Can';t使流布局面板在为空时消失

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

我有一个自定义的Windows窗体(一个扩展了
System.Windows.Forms
)的类)。其布局如下:

  • FLP:流程布局面板。在名称中指定了流向
  • PB:图片框
  • RTB:RichTextBox
  • b:按钮

    问题:底部的FLP可能为空(无按钮)。当这种情况发生时,我希望它收缩到零高度,让上面的FLP和RTB增长并填充该空间。这是因为当没有按钮时,所有的空白空间看起来都很丑陋。 我用
    AutoSize=True
    AutoSize=growtandshrink
    配置了较低的flp。然后,对于上层flp,我设置了
    AutoSize=True
    AutoSizeMode=growtonly
    Dock=Fill
    。但是当我创建一个没有按钮的表单时,空间仍然存在。如果我画控制边界,在较低的flp应该在的地方,我会看到一个小方点。 我哪里做错了


更新:我愿意以更方便的方式重做布局,甚至可以使用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。