Сравните различные способы удаления выбранных элементов из System.Windows.Forms.ListBox - PullRequest
0 голосов
/ 09 апреля 2009

До сих пор я нашел 2 способа удаления выбранных элементов из списка (winform):

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-й способ легко понять, но 1-й странен для меня. Они оба работают на меня, я просто хочу знать разницу?

1 Ответ

0 голосов
/ 09 апреля 2009

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

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

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

Гораздо лучше второй путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...