удаление из списка в c # - PullRequest
2 голосов
/ 22 июня 2011

У меня есть приложение wpf c #, которое загружает задачи в treeView из текстового файла, данные о задачах загружаются в список, я пытаюсь удалить данные в позиции I в списке, но не могу понять,как.У меня есть это для проверки цикла, чтобы увидеть, равен ли выбранный элемент treeView элементу в позиции I в списке, и если да, то я хочу удалить этот элемент из списка.Вот цикл for, который работает, мне просто интересно, как сделать фактическое удаление, я пробовал такие вещи, как .delete и .remove, которые я нашел на msdna.

for (int i = 0; i < name.Count; ++i)
{
       string selectName = ((TreeViewItem)(treeView1.SelectedItem)).Header.ToString();

       if (selectName == name[i])
       {

       //name.Remove(i) or name.Remove[i] or name[i].Remove
       }
}

Ответы [ 4 ]

5 голосов
/ 22 июня 2011

Если name - List<T>, то вы, вероятно, хотите name.RemoveAt(i), если я правильно понимаю вопрос.

В качестве альтернативы, вы можете просто использовать name.RemoveAll(n => n == selectName); вместо цикла for.

1 голос
/ 22 июня 2011

Как насчет:

string selectName = ((TreeViewItem)(treeView1.SelectedItem)).Header.ToString();
name.RemoveAll(x => x == selectedName);
0 голосов
/ 22 июня 2011

В зависимости от потребностей вашего приложения, ваша структура данных должна иметь некоторое время отношения Родитель-ребенок.Все, что вам нужно сделать, это удалить Child, который выбран из родительского, и TreeView в WPF должен просто автоматически обновиться.

Я предлагаю вам прочитать статью Джоша Смитаиспользование ViewModels с TreeView для упрощения управления.Поверьте мне, это сделает вашу жизнь намного проще, чем раньше вы начнете использовать более прочную структуру данных, и просто помните, что TreeView представляет только предоставленные данные, и у вас должны быть другие методы для непосредственного редактирования данных, а не TreeView.

0 голосов
/ 22 июня 2011

Вы должны дать List.Remove () объект, а не индекс.

Итак, предполагая, что имя является списком,

name.Remove((TreeViewItem)treeView1.SelectedItem);
...