1

我有一个 FlowLayoutPanel 和一个 UserControl。

我已将多个用户控件添加到 中FlowLayoutPanel,并且我试图将它们停靠在顶部,因此当我更改FlowLayoutPanel用户控件的大小(宽度)时会相应更改。

4

1 回答 1

3

您不能将任何东西停靠在 FlowLayoutPanel 中,它会被忽略。

在此处查看显然由 Microsoft 团队发布的答案。

他们说:

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事件。

这个解决方案在一定程度上对我有用。您的 UserControls 必须已AutoSize关闭/保持统一大小。

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

我不得不找到一个不同的解决方案。但以上内容可能会对您有所帮助。

于 2011-12-05T16:40:43.790 回答