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) –