Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 查找FlowLayoutPanel的行和列_C#_.net_Flowlayoutpanel - Fatal编程技术网

C# 查找FlowLayoutPanel的行和列

C# 查找FlowLayoutPanel的行和列,c#,.net,flowlayoutpanel,C#,.net,Flowlayoutpanel,只是想知道是否有一种方法可以轻松查找FlowLayoutPanel中当前的行和列,或者是否需要手动计算?需要手动计算。下面是一个使用linq计算高度的示例: var heightNeeded = flowLayoutPanel1.Controls.OfType<Control>() .Max(x => x.Location.Y + x.Height) + 7; var heightNeeded=flowLayoutPanel1.Controls.OfType() .M

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

需要手动计算。

下面是一个使用linq计算高度的示例:

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

此线程很旧,但我今天才有此要求,GetFlowBreak未能在一个控件上返回true,导致flow面板中断到新行。我不知道为什么,我没有时间去弄清楚。这适用于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;
    }
使用:


CT

FlowLayoutPanel没有列或行。。。你是说一个TableLayoutPanel吗?不,我正在使用一个flow布局面板,添加大小相同的控件,它们以行和列的形式出现。我添加的控件是带有图片框和标签的自定义控件,但是边界框只是一个正方形,它们的大小都相同。啊,好的,FlowLayoutPanel中的子控件看起来是行和列,但是面板从左到右、从上到下排列它们。您需要手动计算…好的,不用担心,谢谢您的帮助!
    int rows = ChoiceFlow.GetRowCount();