1

不久前,我发布了这个问题,关于尝试让 flowlayoutpanel 在停靠到容器顶部时正确自动调整大小。我试图完成的是设置一个跨越表单顶部边缘的水平(从左到右)flowlayoutpanel,并且一个datagridview占据了flowlayoutpanel下方的其余可用空间。我无法让 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。

4

2 回答 2

3

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

修复可能是设置FlowLayoutPanel1.Dock = Top(如您之前所做的那样),然后处理FlowLayoutPanel1.Resize事件以调整用户控件的大小。本质上,您是在手动尝试UserControl.SizeFlowLayoutPanel1.Size.

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

于 2010-02-01T17:35:20.030 回答
0

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

于 2010-02-01T09:07:23.647 回答