0
我创建了一些用户控件,我在VS 2013中以编程方式放置在窗体上。这些控件有时需要删除和重新创建。我试过用两种不同的方式删除控件。一个工作,一个不工作。我希望有人能提供洞察力,为什么一个人不工作。从窗体C中删除控件#
这个版本不工作(只发现四分之二的控制):
// delete user controls from the front panel
foreach (UserControl ctrl in this.Controls.OfType<StationControl>())
{
this.Controls.Remove(ctrl);
}
这个版本不工作(发现四分之四的控件):
// delete user controls from the front panel
var uc_list = this.Controls.OfType<StationControl>().ToArray();
foreach (var ctrl in uc_list)
{
this.Controls.Remove(ctrl);
}
我可以计数匹配类型的用户控件的数量没有问题(例如
int controlCount = this.Controls.OfType<StationControl>().Count()
那么为什么第一个foreach st工作不全面?
因为,在第一个例子,你从你所在的同一个集合中移除控制循环结束。在第二个你循环不同的集合,并从窗体控件集合中删除 – Steve
可能的重复[有效地从'foreach'内删除项目](http://stackoverflow.com/questions/8791557/efficiently-deleting-item-从在之内的foreach) –