2014-12-05 2 views
0
foreach (Student student in liststu) 
{ 
    listBox1.Items.Add(student.ToString()); 
} 
foreach (Staff staff in liststa) 
{ 
    listBox1.Items.Add(staff.ToString()); 
} 

У меня есть два Список_массивов liststaliststu, который используется, чтобы заполнить мой ListBox. Я пытаюсь удалить из списка и arrylist в то же время, я пытаюсь сделать с Remove(), но я не знаю, как получить правильное значение из списка для удаления в arraylist.удалить же значение ListBox и ArrayList

for (int i = listBox1.SelectedIndices.Count - 1; i >= 0; i--) 
{ 
    listBox1.Items.RemoveAt(listBox1.SelectedIndices[i]); 
    liststa.Remove(listBox1.SelectedIndex.ToString()); 
} 

как я получить правильное значение из выпадающего списка для использования ArrayList в Remove()

ответ

0

Проблема здесь в том, что .Remove пытается найти определенную строку по значению, а не по индексу.

Например, вы пытаетесь удалить строку «2» из коллекции объектов, не индекс 2

Это звучит, как вы хотите, чтобы удалить с помощью индекса, так просто использовать .RemoveAt на ArrayList а

listBox1.Items.RemoveAt(listBox1.SelectedIndices[i]); 
liststa.RemoveAt(listBox1.SelectedIndices[i]); 

Это, очевидно, требует, чтобы listtsa и listbox1 сохраняются в синхронизации

+0

его давая ошибку «Индекс находился за пределами массива». Я стараюсь, чтобы это было раньше, чем позиция списка, а позиция arraylist отличается. Я думаю, потому что я загружаю другой список в поле списка, –

+0

удаление по строке лучшее решение для меня –

0

вы должны получить выбранное значение элемента из списка не только SelectedIndexКроме того, вы должны удалить из ArrayList до Список

попробовать это

int selectedIndex; 
for (int i = listBox1.SelectedIndices.Count - 1; i >= 0; i--) 
{ 
selectedIndex=listBox1.SelectedIndices[i]; 
liststa.Remove(listBox1.Items[selectedIndex].ToString()); 
listBox1.Items.RemoveAt(selectedIndex); 
} 
+0

все еще arraylist не удален –

0

можно попытаться удалить с помощью индекса, но удалить из ArrayList перед списком как следующий

int selectedIndex; 
for (int i = listBox1.SelectedIndices.Count - 1; i >= 0; i--) 
{ 
selectedIndex=listBox1.SelectedIndices[i]; 
liststa.RemoveAt(selectedIndex); 
listBox1.Items.RemoveAt(selectedIndex); 
} 
+0

этот код работает, но у меня есть два arraylist загрузка одинакового списка, –

+0

Почему бы вам не объединить 2 arraylists в один? – Nobel

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