gpt4 book ai didi

c# - TableLayoutPanel 中的 RowStyles 和 Rows 不匹配?

转载 作者:行者123 更新时间:2023-12-02 07:34:07 24 4
gpt4 key购买 nike

我们将控件隐藏在 TableLayoutPanel 中。一段时间以来,我们一直在使用以下代码来隐藏不应可见的行。

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

m_panel.RowStyles[controlRow].SizeType = SizeType.Absolute;
m_panel.RowStyles[controlRow].Height = 0;

现在我们添加了更多行,突然之间索引出现了问题。RowStyles 比 Rows 少。

There are more rows than rowstyles. Screencap from debugging.

是否有什么可疑的事情发生,或者我是否误解了 TableLayoutPanel 的工作原理?

最佳答案

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

//add a new row
tableLayoutPanel.RowCount++;
tableLayoutPanel.RowStyles.Add(newRowStyle);

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

关于c# - TableLayoutPanel 中的 RowStyles 和 Rows 不匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20275070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com