Winforms在点击时删除控件
本文关键字:删除 控件 Winforms | 更新日期: 2023-09-27 17:54:49
在我的应用程序中,我正在动态生成一些控件。在teleerik菜单控件上,当我单击时,我想删除这些控件并添加新的控件。我正在使用以下代码。它正在删除控件,但每次点击只删除一个控件。为什么这段代码没有一次删除所有的控件?
private void radMenuItem3_Click(object sender, EventArgs e)
{
foreach (Control ctrl in rpvRecord.Controls)
{
ctrl.Dispose();
}
}
如果你想一次删除所有控件,你可以使用Clear()方法
private void radMenuItem3_Click(object sender, EventArgs e)
{
rvpRecord.Controls.Clear();
}
问题是,您正在从正在遍历的集合中删除控件,这会导致集合中的更改并导致循环失败。我建议使用不同风格的循环来实现这一点。例如:
private void radMenuItem3_Click(object sender, EventArgs e)
{
while (rpvRecord.Controls.Count > 0)
{
ctrl = rpvRecord.Controls[0];
rpvRecord.Controls.Remove(ctrl);
ctrl.Dispose();
}
}
希望这对你有帮助!
可能需要从集合中删除项目,并且在执行foreach循环时可能会更改集合计数。你可能想用i从rpvRecord.Controls.Count - 1迭代到0——像这样:
private void radMenuItem3_Click(object sender, EventArgs e)
{
for (var i = rpvRecord.Controls -1; i >= 0; i --)
{
ctrl = rpvRecord.Controls[i];
rpvRecord.Controls.Remove(cntrl);
ctrl.Dispose();
}
}