从c#中的列表中删除

时间:2011-06-22 18:13:22

标签: c# wpf list selecteditem

我有一个wpf c#应用程序,它将任务从文本文件加载到treeView,有关任务的数据正在加载到列表中,我试图删除列表中位置I的数据,但我无法弄清楚怎么样。我有这个循环检查,以查看所选的treeView项是否等于列表中位置I的项目,如果是这样,我想从列表中删除该项。这是for循环有效,我只是想知道如何进行实际删除,我尝试过在msdna上找到的.delete.remove等内容。

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 个答案:

答案 0 :(得分:5)

如果名称是List<T>,那么如果我正确理解了问题,您可能需要name.RemoveAt(i)

或者,您可以使用name.RemoveAll(n => n == selectName);代替for循环。

答案 1 :(得分:1)

怎么样:

string selectName = ((TreeViewItem)(treeView1.SelectedItem)).Header.ToString();
name.RemoveAll(x => x == selectedName);

答案 2 :(得分:0)

您必须为List.Remove()提供一个对象,而不是索引。

因此,假设name是List,

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

答案 3 :(得分:0)

根据您的应用程序需求,您的数据结构应该有一段父子关系时间。您所要做的就是删除从父级中选择的ChildTreeView中的WPF应该自动更新。

我建议您阅读Josh Smith's article on using ViewModels with the TreeView以便于管理。相信我,你越早开始使用更强大的数据结构就会让你的生活变得更轻松,并且只记得TreeView只代表所提供的数据,你应该有其他方法直接编辑数据,而不是TreeView