我在C#WPF中处于novince级别。作为一名学生,我愿意学习并希望得到一些建议。
我想编写一个代码,我可以通过单击DELETE按钮从TreeView中删除单个项目。我想我已经正确地实现了代码,但最后我还是得到了System.NullReferenceException。 “对象引用未设置为对象的实例。”
我也会在这里粘贴我的代码。
private void Functions_KeyDown(object sender, KeyEventArgs e)
{
switch (e.Key)
{
case Key.Delete:
DeleteData_Functions();
break;
default:
break;
}
}
public void DeleteData_Functions()
{
TreeViewItem parent = (tv_Function.SelectedItem as TreeViewItem).Parent as TreeViewItem;
parent.Items.Remove(tv_Function.SelectedItem);
}
tv_Function是我的TreeView的名称。我想当我选择要删除的项目并单击删除时,它应该返回一些值而不是null。
非常感谢任何帮助或提示。提前谢谢。
答案 0 :(得分:2)
TreeViewItem t1=tv_Function.SelectedItem as TreeViewItem;
if(t1==null)
return;//or throw exception or whatever you want
TreeViewItem parent =t1.Parent as TreeViewItem;
if(parent==null)
return;//or throw exception or whatever you want
parent.Items.Remove(tv_Function.SelectedItem);
你的问题是其中一个变量不是TreeViewItem(或者是,它是null)
如果您需要将所选项目作为TreeViewItem使用此代码
TreeViewItem t1 = tv_Function.ItemContainerGenerator.ContainerFromItem(tv_Function.SelectedItem) as TreeViewItem;
如果您已经设置了树的ItemSource属性,那么"删除"线不起作用。
从像
这样的itemsource中删除对象Software t1 = myTree.SelectedItem as Software;
TheTreesItemSourceCollection.Remove(t1);