我们将控件隐藏在TableLayoutPanel
中。我们一段时间以来一直在使用以下代码来隐藏不可见的行。
int controlRow = m_panel.GetPositionFromControl(control).Row;
m_panel.RowStyles[controlRow].SizeType = SizeType.Absolute;
m_panel.RowStyles[controlRow].Height = 0;
现在我们已经添加了更多的行,突然之间索引出现了问题。
RowStyles少于Rows。
发生什么混乱了吗,还是我误解了
TableLayoutPanel
的工作原理? 最佳答案
我已经尝试研究这个问题。问题是您没有以正确的方式添加行。要正确添加行,必须确保RowCount
的值和RowStyles
的数量相等。您可以在tableLayoutPanel的自动生成的代码中的Form1.Designer.cs
中看到此权限。因此,您应该执行以下操作:
//add a new row
tableLayoutPanel.RowCount++;
tableLayoutPanel.RowStyles.Add(newRowStyle);
实际上,不匹配不会引起非常严重的问题。当
RowStyles.Count
大于实际的RowCount
时,将使用所有顶部的RowStyle(计数等于RowCount
的样式)来设置行的样式,其余的可视为保留。当RowStyles.Count
小于实际的RowCount
时,将有些行没有任何样式,并且可能会折叠。无论如何,使用我上面发布的代码添加新行将帮助您避免任何问题。关键是我们必须确保行数和RowStyles
数相等。