2009-04-09 1 views
0

До сих пор я нашел 2 способа удалить выбранные элементы из ListBox (Winform):Сравните различные способы удаления выбранных элементов из System.Windows.Forms.ListBox

1.

ListBox.SelectedObjectCollection tempCollection = new ListBox.SelectedObjectCollection(myListBox); 
for (int i = tempCollection.Count - 1; i >= 0; i--) 
{ 
    myListBox.Items.Remove(tempCollection[i]); 
} 

2.

while (myListBox.SelectedItems.Count > 0) 
{ 
    myListBox.Items.Remove(myListBox.SelectedItem); 
    // or 
    //myListBox.Items.Remove(myListBox.SelectedItems[0]); 
} 

2-й способ легко понять, но первый для меня странный. Они оба работают для меня, я просто хочу знать разницу?

ответ

0

Первый способ написан действительно странно. Это выглядит странно, потому что оно идет назад. Это так, что оно не нарушает набор выбранных элементов. Выбранная коллекция предметов не полностью создана, это коллекция Enumerable, и элементы отрываются от нее только тогда, когда вы их просите. Вы не можете использовать foreach, потому что коллекция выбранных элементов продолжает меняться при удалении элементов.

Я действительно предпочитаю второй способ. Кроме того, все, что легче читать, легче поддерживать. Первый гласит: получить выбранные элементы, пропустить их назад, удалить их из списка.

Второе сообщение: пока есть выбранные элементы, удалите первый доступный выбранный элемент.

Намного лучше второй способ.

Смежные вопросы