开发者

deleting from a list in c#

I have a wpf c# application, that loads tasks to a treeView from a text file, the data about the tasks are loading into a list, Im trying to delete data in position I in the list, but i can not figure out how. I have this for loop checking to see if the selected treeView item is equal to the item in position I in the list and if so I wanna delete that item from the list. Here is the for loop which works, im just wondering how to do the actual delete, I've tried things such as 开发者_运维问答.delete and .remove which I found on 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
       }
}


If name is a List<T> then you probably want name.RemoveAt(i) if I understand the question correctly.

Alternatively, you could just use name.RemoveAll(n => n == selectName); instead of the for loop.


How about:

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


You have to give List.Remove() an object, not an index.

So, assuming name is a List,

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


Depending on your application needs, your data structure should have some time of Parent-Child relationship. All you should have to do is remove the Child that is selected from the parent, and the TreeView in WPF should just automatically update.

I suggest you read Josh Smith's article on using ViewModels with the TreeView for easier management. Trust me it will make your life a lot easier the sooner you start using a stronger data structure, and just remember that a TreeView only represents the data provided, and you should have other methods to edit the data directly and not the TreeView.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜