2010-06-03 2 views
2

Я пытаюсь удалить элемент из списка, но не работает. даже если я уверен, что существует элемент для удаления. любое представление о том, что может быть неправильным?cant удалить элемент из списка

iSelectedItem = ContactConflictListBox.ItemIndex; 


if ((iSelectedItem == -1)) 
{ 
    return; 
} 

ContactConflictListBox.Items.Remove(iSelectedItem); 
+1

Вы нарушили код, чтобы определить, что происходит? Я бы предположил, что использование свойства SelectedIndex не может повлиять на вашу проблему. – Tejs

ответ

4

Вы получаете индекс, а не элемент. Чтобы удалить по индексу, используйте ContactConflictListBox.Items.Remove(ContactConflictListBox.Items[iSelectedItem]); или ContactConflictListBox.Items.RemoveAt(iSelectedItem);. Имейте в виду, что метод RemoveAt не должен использоваться в коде, это просто для инфраструктурных причин.

+0

Это была моя первая идея. К сожалению, документы говорят * Этот API поддерживает инфраструктуру .NET Framework и не предназначен для использования непосредственно из вашего кода. * – OregonGhost

+0

Спасибо man.it отлично поработал с RemoveAt – Strider007

+0

@ Strider007: Если вы его не видели, RemoveAt is не предназначенный для непосредственного использования, поэтому он может * налагать проблемы совместимости в будущем (хотя это маловероятно). Просто знайте об этом. – OregonGhost

1

ListBox.ObjectCollection.Remove принимает объект, который вы хотите удалить как аргумент. Вы должны либо вызвать ListBox.ObjectCollection.RemoveAt (который, к сожалению, документированы, как инфраструктура только), или передать объект в ListBox.ObjectCollection.Remove:

ContactConflictListBox.Items.Remove(ContactConflictListBox.Items[iSelectedItem]); 

(или, в случае, если индекс не относится :)

ContactConflictListBox.Items.Remove(ContactConflictListBox.SelectedItem); 
3
if (ListBox.SelectedItem!= null) 
{ 
    ListBox.Items.Remove(ListBox.SelectedItem); 
} 
Смежные вопросы