如何将UserControl停靠到FlowLayoutPanel?

时间:2011-10-24 19:08:33

标签: user-controls dock docking flowlayoutpanel

我有一个FlowLayoutPanel和一个UserControl。

我已经在FlowLayoutPanel中添加了多个用户控件,我试图将它们停靠在顶部,所以当我更改FlowLayoutPanel的大小(用户控件的大小(宽度)时相应地改变。

1 个答案:

答案 0 :(得分:3)

你不能在FlowLayoutPanel中停靠任何东西,它只是被忽略了。

查看微软团队发布的answer here

他们说:

  

FlowLayoutPanel依赖于最大的控件来有效地定义其中的列/行。下面的代码设置第一个控件的大小到FLP的宽度,以实现类似于你想要的布局。

    private void flowLayoutPanel1_Layout(object sender, LayoutEventArgs e)
    {
        flowLayoutPanel1.Controls[0].Dock = DockStyle.None;
        for (int i = 1; i < flowLayoutPanel1.Controls.Count; i++)
        {
            flowLayoutPanel1.Controls[i].Dock = DockStyle.Top;
        }
        flowLayoutPanel1.Controls[0].Width = flowLayoutPanel1.DisplayRectangle.Width - flowLayoutPanel1.Controls[0].Margin.Horizontal;

    }

关键是使用Layout事件。

这个解决方案对我有用。您的UserControl必须关闭AutoSize /保持统一的大小。

在我的情况下,我希望AutoSize打开,以便允许UserControl在填充FlowLayoutPanel的宽度时垂直扩展/收缩。

我必须找到一个不同的解决方案。但上述情况可能对您有所帮助。