使用“删除”按钮删除TreeViewItem

时间:2013-08-06 19:51:29

标签: c# wpf keypress treeviewitem

我希望能够通过按键盘上的删除按钮从TreeViewItem删除子节点。我正在使用SelectedItem来尝试这样做。

目前我在代码隐藏中使用KeyDown事件:

private void Tree_One_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Delete)
        class.deleteNodeOnKeyPress();
}

从那里我的程序调用一个应该执行删除操作的函数:

public static void deleteNodeOnKeyPress()
{
    Tree.Items.Remove(Tree.SelectedItem);
}

这是我尝试过的,对于我的生活,我不知道为什么它不起作用。我以前遇到过keyPress事件的问题。也许有人可以指出我正确的方向。

如果您需要更多代码,请告诉我们!

更新:我现在正在使用e.Key == Key.Delete,但仍然不会影响任何更改。

尝试Tree.Items.Remove(Tree.SelectedItem);

后,编译错误如下
  1. The property or indexer 'System.Collections.ObjectModel.Collection<System...TreeViewItem>.Items' cannot be used in this context because the get accessor is inaccessible

  2. 'System.Collections.ObjectModel.Collection<System...TreeViewItem>.Items' is inaccessible due to its protection level

  3. 'System.Collections.ObjectModel.ObservableCollection<System...TreeViewItem>' does not contain a definition for 'SelectedItem' and no extension method 'SelectedItem' accepting a first argument of type 'System.Collections.ObjectModel.ObservableCollection<System...TreeViewItem>' could be found (are you missing a using directive or an assembly reference?)

3 个答案:

答案 0 :(得分:1)

    function detectspecialkeys(e) {
         var evtobj = window.event ? event : e
         if (evtobj.altKey || evtobj.ctrlKey || evtobj.shiftKey)
             alert("you pressed one of the 'Alt', 'Ctrl', or 'Shift' keys")
     }
             document.onkeyup = detectspecialkeys

答案 1 :(得分:0)

似乎真正的问题在于Tree.Remove(SelectedItem);。我建议您使用treeView1.Items.Remove(treeView1.SelectedItem);,其中treeView1是您的TreeView控件。

答案 2 :(得分:0)

我知道这个问题相当陈旧,但我在尝试做同样的事情时遇到了它(在检测到用户按下Delete键时删除了一个TreeView节点)。不确定为什么要尝试从Items集合中删除,但从Nodes集合中删除SelectedNode应该可以正常工作。没有提到的一件事是SelectedItem(或SelectedNode)可以为null,因此您可能希望测试它。

private void Tree_One_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Delete)
    {
        if (Tree.SelectedNode != null)
        {
            Tree.Nodes.Remove(Tree.SelectedNode);
        }
    }
}