我有一个 GroupBox,我可以在其中动态添加控件。我添加的控件有两种类型DevExpress.XtraEditors.TextEdit,Windows.Forms.Label
我正在尝试使用以下方法删除这些控件
foreach (Control control in salesBox.Controls)
{
control.Dispose();
salesBox.Controls.Remove(control);
}
Run Code Online (Sandbox Code Playgroud)
这是正确删除TextEdit控件但不是Label控件。循环不遍历Label控件。
从控件集合中删除所有控件的最简单方法是调用其Clear方法:
salesBox.Controls.Clear();
Run Code Online (Sandbox Code Playgroud)
修改集合会使枚举器无效并产生不可预测的结果,甚至抛出InvalidOperationException,具体取决于集合类型(请参阅MSDN 上IEnumerable.GetEnumerator 方法中的“备注”部分)。由于foreach使用枚举器,您不应更改它正在迭代的集合。
使用for语句,如果您必须有选择地删除并向后迭代,以便在删除项目后不会得到错误的索引值:
for (int i = salesBox.Controls.Count - 1; i >= 0; i--) {
Control c = salesBox.Controls[i];
if (c is TextEdit || c is Label) {
salesBox.Controls.RemoveAt(i);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9750 次 |
| 最近记录: |