只是想知道是否有办法轻松查找FlowLayoutPanel中当前的行和列,或者是否需要手动计算?
答案 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;