TableLayoutPanel中的RowStyles和Rows不匹配?

Car*_*l R 4 .net c# tablelayoutpanel winforms

我们隐藏了一个控件TableLayoutPanel.我们一直使用以下代码来隐藏不应该可见的行.

int controlRow = m_panel.GetPositionFromControl(control).Row;

m_panel.RowStyles[controlRow].SizeType = SizeType.Absolute;
m_panel.RowStyles[controlRow].Height = 0;
Run Code Online (Sandbox Code Playgroud)

现在我们已经添加了更多行,突然间我们遇到了索引问题.RowStyles比Rows少.

行格式比行格式更多. Screencap来自调试.

有什么可疑的东西,或者我误解了它的TableLayoutPanel作用?

Kin*_*ing 10

我试过深入研究这个问题.问题是您没有以正确的方式添加行.要正确添加行,必须确保值RowCount和数量RowStyles相等.您可以Form1.Designer.cs在tableLayoutPanel的自动生成代码中看到这一点.所以你应该做这样的事情:

//add a new row
tableLayoutPanel.RowCount++;
tableLayoutPanel.RowStyles.Add(newRowStyle);
Run Code Online (Sandbox Code Playgroud)

事实上,不匹配并不会导致非常严重的问题.当RowStyles.Count大于实际值时RowCount,所有顶部RowStyles(其数量等于RowCount)将用于设置行的样式,其余的可以看作是reserve.当RowStyles.Count小于实际值时RowCount,会有一些行没有任何样式并且可能会折叠.无论如何使用我上面发布的代码添加新行将帮助您避免任何问题.关键是我们必须确保行数和数量RowStyles相等.