Столкнулся с проблемой удаления нескольких (!) выделенных эллементов в ListBox.
Делал так:
foreach (FileInfo o in listbox.SelectedItems)
{
listbox.Items.Remove(o);
}
// В лист вох заносятся объекты типа FileInfo
при этом удаляется только 1-я выделенная строка, потом вызывается ексепшен.
Перебрал кучу вариантов но решения так и не нашёл... Помогите кто знает.
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Ты вызываешь "
для каждого из" коллекции и тут же состав этой коллекции меняешь. Так нельзя.
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Я делал копию этой коллекции (SelectedItems) и удалал из неё. Эффект тот же.
А как надо?
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
может так попробовать:
While listbox.SelectedItems.Count > 0
listbox.SelectedItems.Remove( listbox.SelectedItems.Item(0))
End While
или
x:
foreach (FileInfo o in listbox.SelectedItems)
{
listbox.Items.Remove(o);
goto x
}
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Здравствуйте, zxmd, Вы писали:
Z>Я делал копию этой коллекции (SelectedItems) и удалал из неё. Эффект тот же.
Z>А как надо?
Z>
данное сообщение получено с www.gotdotnet.ru
Z>ссылка на оригинальное сообщение
скопируй все выделеное в коллекцию, потом проходясь по этой колеекции удаляй каждый элемент из list'а
Удалять то что перебираешь в foreach нельзя.
Как вариант:
int _count = listBox.SelectedItems.Count;
for ( int i = 0; i < _count ; i++ )
{
listBox.Items.Remove( listBox.SelectedItems[0] );
}
типа так...
while (listBox1.SelectedItems.Count>0)
{
listBox1.Items.Remove(listBox1.SelectedItems[0]);
}
Kate
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение