我想在一个看起来像这样的 for 循环中删除 tabControle 的 TabPages:
for (int i = 1; i < 7; i++)
{
var tabPage = "tabPage" + i;
tabControl.TabPages.Remove(tabPage); // converting error here
}
如何将字符串转换为 TabPage 对象?
谢谢
我想在一个看起来像这样的 for 循环中删除 tabControle 的 TabPages:
for (int i = 1; i < 7; i++)
{
var tabPage = "tabPage" + i;
tabControl.TabPages.Remove(tabPage); // converting error here
}
如何将字符串转换为 TabPage 对象?
谢谢
如果要删除除第一个页面之外的所有页面,则不能以这种方式使用循环。
当您从集合中删除一个元素时,您的索引将与集合中的元素总数不同步,并且您可能会遇到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);
}
你可以这样做:
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();