我们隐藏了一个控件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
相等.您可以Form1.Designer.cs
在tableLayoutPanel的自动生成代码中看到这一点.所以你应该做这样的事情:
//add a new row tableLayoutPanel.RowCount++; tableLayoutPanel.RowStyles.Add(newRowStyle);
事实上,不匹配并不会导致非常严重的问题.当RowStyles.Count
大于实际值时RowCount
,所有顶部RowStyles(其数量等于RowCount
)将用于设置行的样式,其余的可以看作是reserve.当RowStyles.Count
小于实际值时RowCount
,会有一些行没有任何样式并且可能会折叠.无论如何使用我上面发布的代码添加新行将帮助您避免任何问题.关键是我们必须确保行数和数量RowStyles
相等.