1

我想在一个看起来像这样的 for 循环中删除 tabControle 的 TabPages:

for (int i = 1; i < 7; i++)
{
    var tabPage = "tabPage" + i;
    tabControl.TabPages.Remove(tabPage); // converting error here
}

如何将字符串转换为 TabPage 对象?

谢谢

4

2 回答 2

2

如果要删除除第一个页面之外的所有页面,则不能以这种方式使用循环。

当您从集合中删除一个元素时,您的索引将与集合中的元素总数不同步,并且您可能会遇到Index out of range 异常,但您仍然没有删除所有 intedend 页面,因为位置当您删除集合中的元素时,剩余的页面会发生变化。

通常的技巧是以相反的顺序循环

for (int i = 6; i > 0; i--)
{
    tabControl.TabPages.RemoveAt(i); 
}

或者,如果您的字符串表示 tabPage 的属性键,您可以使用RemoveByKey

for (int i = 6; i > 0; i--)
{
    var tabPageKey = "tabPage" + i;
    tabControl.TabPages.RemoveByKey(tabPageKey); 
}
于 2013-07-05T14:30:25.953 回答
1

你可以这样做:

for (int i = 1; i < 7; i++)
{
    var tabPage = FindControl("tabPage" + i);
    tabControl.TabPages.Remove(tabPage); 
}

或这个:

for (int i = 1; i < 7; i++)
{
    var tabPage = "tabPage" + i;
    tabControl.TabPages.RemoveByKey(tabPage); 
}

或者这样删除前 6 个标签页:

for (int i = 1; i < 7; i++) 
{
    tabControl.TabPages.RemoveAt(0); 
}

或者,如果目标是删除所有标签页,这更容易:

tabControl.TabPages.Clear();
于 2013-07-05T14:28:58.273 回答