Ser*_*pia 4 c# foreach winforms
这是我的代码:
private void ClearSearchResults()
{
foreach (Control X in panel1.Controls)
{
panel1.Controls.Remove(X);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我运行此方法时,只删除一个项目,然后如果我再次单击一个按钮以便该方法可以再次运行,则删除另一个项目.
如果我的面板中有10个控件,我必须多次单击程序上的"删除"按钮才能删除所有控件.
在这种情况下我该怎么办?
Ree*_*sey 16
通常,在迭代从中生成的枚举时,您无法从集合中删除.而不是使用foreach,典型的方法是使用for循环向后工作:
private void ClearSearchResults()
{
for(int i=panel1.Controls.Count-1;i>=0;--i) {
panel1.Controls.RemoveAt(i);
// or
// Control X = panel1.Controls[i];
// panel1.Controls.Remove(X);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,在这种情况下,只需使用clear:
panel1.Controls.Clear();
Run Code Online (Sandbox Code Playgroud)
Aus*_*nen 14
这对你有用吗?
private void ClearSearchResults()
{
panel1.Controls.Clear();
}
Run Code Online (Sandbox Code Playgroud)
编辑强调CKret评论.