前段时间,我发布了this question关于尝试在停靠到容器顶部时使flowlayoutpanel正确自动调整大小的问题。我正在尝试完成的是设置跨越窗体顶部边缘的水平(从左到右)flowlayoutpanel,以及占用flowlayoutpanel下面剩余可用空间的datagridview。我无法让flowlayoutpanel的height属性自动调整它应该的方式。张贴的答案非常适合我想要完成的事情,这很棒......
无法单独留下足够的空间,我现在正试图更进一步,将flowlayoutpanel包装在UserControl中。但是,我发现这样做会导致flowlayoutpanel不再正确调整其高度。
这是第一个布局,效果很好:
FlowLayoutPanel1 (Autosize = true, Dock = Top)
ComboBox1
ComboBox2
ComboBox3
DataGridView1 (Dock = Fill)
这里是用于包含在UserControl中的flowlayoutpanel:
UserControl (Autosize = true, Dock = Top)
FlowLayoutPanel1 (Autosizse = true, Dock = Fill)
ComboBox1
ComboBox2
ComboBox3
DataGridView1 (Dock = Fill)
无论出于何种原因,当调整表单大小时,flowlayoutpanel不会正确调整其高度。这很容易重现。哦,FlowLayoutPanel的内容可以是任何东西,而不仅仅是ComboBoxes。
答案 0 :(得分:2)
我认为问题在于你有FlowLayoutPanel1.Dock = Fill
覆盖它试图自动调整它的高度。
修复可能是设置FlowLayoutPanel1.Dock = Top
(就像之前一样),然后处理FlowLayoutPanel1.Resize
事件以调整用户控件的大小。基本上,您是手动尝试让UserControl.Size
与FlowLayoutPanel1.Size
保持同步。
可能有一种更聪明的方法可以做到这一点,但希望它会让你走上正确的道路......
答案 1 :(得分:0)
您的UserControl是否设置了宽度?查看designer.cs以确定。如果是,则需要重置该属性。