WinForms UserControl布局自动调整问题

时间:2010-02-01 09:02:48

标签: .net winforms layout autosize flowlayoutpanel

前段时间,我发布了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。

2 个答案:

答案 0 :(得分:2)

我认为问题在于你有FlowLayoutPanel1.Dock = Fill覆盖它试图自动调整它的高度。

修复可能是设置FlowLayoutPanel1.Dock = Top(就像之前一样),然后处理FlowLayoutPanel1.Resize事件以调整用户控件的大小。基本上,您是手动尝试让UserControl.SizeFlowLayoutPanel1.Size保持同步。

可能有一种更聪明的方法可以做到这一点,但希望它会让你走上正确的道路......

答案 1 :(得分:0)

您的UserControl是否设置了宽度?查看designer.cs以确定。如果是,则需要重置该属性。