How to remove multiple checked items from CheckedListBox

I know how to remove one checkedItemof checkedlistbox. But now I want to delete all the marked items in one go.

I tried this:

foreach (var item in List_Frente.CheckedItems)
            {
                List_Frente.Items.Remove(item);
            }

But, as you probably know, this gives me an error saying that List that this enumerator is bound to has been modified. An enumerator can only be used if the list does not change.How can I delete everything with checkeditemsone click?

+5
source share
5 answers

you can do something like this:

foreach (var item in List_Frente.CheckedItems.OfType<string>().ToList())
{
    List_Frente.Items.Remove(item);
}

If you want to write everything in one line:

List_Frente.CheckedItems.OfType<string>().ToList().ForEach(List_Frente.Items.Remove);

This only works if your items are of the same type. It still looks rude.

Edit-: ToList() , , CheckedItems, , . OfType<string>() , - ToList() on.

+8

, , . for-statement :

for(var i=0; i<List_Frente.CheckedItems.Count; i++)
{
    ((IList)List_Frente.CheckedItems).Remove(List_Frente.CheckedItems[0]);
}

MSDN, CheckedListBox.CheckedItemCollection IList.Remove, , IList, .

+2

.

object[] items = new object[checkedListBox.Items.Count];
checkedListBox.Items.CopyTo(items, 0);
checkedListBox.Items.Clear();
checkedListBox.Items.AddRange(items);

.

0
while (checkedListBox.CheckedItems.Count > 0) {
   checkedListBox.Items.RemoveAt(checkedListBox.CheckedIndices[0]);
}
0

.

.

checkedListBox1.Items.Clear();
0

All Articles