我想这样做,但是列表框在每次删除时都会更改,因此即使我尝试创建一个新对象,它也会引发运行时异常。
我这样尝试过:
ListBox.SelectedObjectCollection selectedItems = new ListBox.SelectedObjectCollection(lstClientes);
selectedItems = lstClientes.SelectedItems;
if (lstClientes.SelectedIndex != -1)
{
foreach (string s in selectedItems)
lstClientes.Items.Remove(s);
}
else
MessageBox.Show("Debe seleccionar un email");
最佳答案
您无法在迭代集合时(使用foreach
)修改集合。而是使用反向for
循环:
ListBox.SelectedObjectCollection selectedItems = new ListBox.SelectedObjectCollection(lstClientes);
selectedItems = lstClientes.SelectedItems;
if (lstClientes.SelectedIndex != -1)
{
for (int i = selectedItems.Count - 1; i >= 0; i--)
lstClientes.Items.Remove(selectedItems[i]);
}
else
MessageBox.Show("Debe seleccionar un email");
使用反向循环可确保您在删除它们后不会跳过任何内容。
关于c# - 从列表框中删除所选项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13149486/