我们将控件隐藏在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数相等。

07-26 08:39