問題

私はそれをしたいが、リストボックスはすべての削除で変更されるので、新しいオブジェクトを実行しようとしても実行時例外がスローされます。

私はこのようにしてみました:

 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#listbox