Удаление списка - PullRequest
       19

Удаление списка

0 голосов
/ 04 сентября 2011

Я пытаюсь использовать что-то вроде listId.Items.Remove(listId.SelectedItem[x]); после обработки каждого элемента.Очевидно, что не работает никаких предложений:

int listCellCounter = 0;

for (int x = 0; x < listId.Items.Count; x++)
{
    Console.WriteLine(txtWebUpdate.Text + listId.Items[x].ToString() + "&ire=1", listCell.Items[listCellCounter].ToString());
    listId.SelectedIndex = x;
    listCell.SelectedIndex = listCellCounter;
    lblID.Text = listId.Items[x].ToString();

    if (listCellCounter == listCell.Items.Count - 1)
    {
        listCellCounter = 0;
    }
    else
    {
        listCellCounter += 1;
    }
}

Ответы [ 4 ]

1 голос
/ 04 сентября 2011

Если порядок обработки не критичен, начните с последнего элемента.Например:

for (int x = listId.Items.Count-1; x > 0; x--) {}
0 голосов
/ 04 сентября 2011

Если вы не хотите отображать удаление каждого элемента для пользователя, просто очистите ListBox после завершения цикла:

} //end loop

listId.Clear();
0 голосов
/ 04 сентября 2011

Другой альтернативой является алгоритм метки и развертки. Создайте список объектов для удаления в цикле for (вместо того, чтобы удалять их), а затем удалите все элементы в этом списке после того, как вы рассчитали, какие объекты необходимо удалить.

0 голосов
/ 04 сентября 2011

Обычно я бы предложил обрабатывать выбранные элементы в списке, например, если вы удаляете их по мере их обработки:

for(int x = listId.SelectedIndex; x >= 0; x = listId.SelectedIndex)
{
   // Do your processing here
   listId.Items.RemoveAt(x);
   listId.Update();
}

Но похоже, что вы обрабатываете каждый элемент в списке. Если это так, может быть, это уместно:

while (listId.Items.Count > 0)
{
   listId.SelectedIndex = 0;
   listId.Update();
   // Do your processing here
   listId.Items.RemoveAt(0);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...