如何从列表框中删除选定的项目?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (209)

我想这样做,但是,列表框会在每次删除时发生变化,所以即使我试图创建新对象,它也会抛出运行时异常。

我试过这样的:

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");
提问于
用户回答回答于

迭代(使用a 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");
用户回答回答于
selectedItems = lstClientes.SelectedItems;

此行不创建新的集合,但设置对列表框中的引用。因此,你正在遍历一个集合并尝试一次从其中删除项目。这不可能

你可以使用这个,例如:

foreach (string s in lstClientes.SelectedItems.OfType<string>().ToList())
   lstClientes.Items.Remove(s);

所属标签

可能回答问题的人

  • 腾讯云数据库 TencentDB

    腾讯云 · 产品团队 (已认证)

    302 粉丝2 提问51 回答
  • EatRice

    17 粉丝0 提问183 回答
  • 华讯云

    1 粉丝0 提问156 回答
  • 成都加米谷大数据

    11 粉丝0 提问16 回答

扫码关注云+社区

领取腾讯云代金券