我目前有一个Sharepoint 2010
网页部分,其中包含多个标签。我想以编程方式删除其中一个标签。
我尝试了下面的代码,但得到了System.InvalidOperationException
,因为显然在迭代它时无法修改集合。但是,我不知道如何尝试这个。
private void clearLabels()
{
foreach (Control cont in this.Controls)
if (cont is Label && cont.ID != "error")
this.Controls.Remove(cont);
}
答案 0 :(得分:5)
向后迭代它。
for(int i = this.Controls.Count - 1; i >= 0; i--)
{
if (this.Controls[i] is Label && this.Controls[i].ID != "error")
{
this.Controls.Remove(this.Controls[i]);
}
}
答案 1 :(得分:1)
您对错误的原因是正确的。以下使用Linq和ToArray()来解决问题:
private void clearLabels()
{
foreach (from cont in this.Controls).ToArray()
if (cont is Label && cont.ID != "error")
this.Controls.Remove(cont);
}
我会进一步重构:
private void clearLabels() {
foreach (from cont in this.Controls
where cont is Label && cont.ID != "error"
).ToArray()
this.Controls.Remove(cont);
}