查找FlowLayoutPanel的行和列

时间:2011-04-06 05:42:02

标签: c# .net flowlayoutpanel

只是想知道是否有办法轻松查找FlowLayoutPanel中当前的行和列,或者是否需要手动计算?

3 个答案:

答案 0 :(得分:1)

需要手动计算。

答案 1 :(得分:0)

该线程很旧,但直到今天我才有了要求,并且GetFlowBreak无法在导致流面板中断到新行的控件上返回true。我不确定为什么,我没有时间弄清楚。这适用于FlowDirection = LeftToRight。

坦白说,我没有时间写这篇文章,但是我还是。这是一个简单的扩展方法,它将计算行数:

    public static int GetRowCount(this FlowLayoutPanel flowPanel)
    {
        int rows = 1;

        int rowWidth = flowPanel.ClientRectangle.Width;

        foreach (Control control in flowPanel.Controls)
        {
            rowWidth -= control.Width;

            if (rowWidth > 0)
            {
                continue;
            }

            rows += 1;
            rowWidth = flowPanel.ClientRectangle.Width;
        }

        return rows;
    }

使用:

    int rows = ChoiceFlow.GetRowCount();

HTH!

CT

答案 2 :(得分:-1)

以下是使用linq计算高度的示例:

var heightNeeded = flowLayoutPanel1.Controls.OfType<Control>()
    .Max(x => x.Location.Y + x.Height) + 7;