我有一个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
}
}
答案 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)
答案 3 :(得分:0)
根据您的应用程序需求,您的数据结构应该有一段父子关系时间。您所要做的就是删除从父级中选择的Child
,TreeView
中的WPF
应该自动更新。
我建议您阅读Josh Smith's article on using ViewModels
with the TreeView
以便于管理。相信我,你越早开始使用更强大的数据结构就会让你的生活变得更轻松,并且只记得TreeView
只代表所提供的数据,你应该有其他方法直接编辑数据,而不是TreeView
。