3

我希望能够TreeViewItem通过按键盘上的删除按钮从 a 中删除子节点。我正在使用 aSelectedItem来尝试执行此操作。

目前我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?)

4

3 回答 3

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
于 2014-05-20T05:46:24.857 回答
1

我知道这个问题相当老了,但是我在尝试做同样的事情时遇到了它(在检测到用户按下 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);
        }
    }
}
于 2016-01-21T15:04:26.813 回答
0

It seems that the real problem is with Tree.Remove(SelectedItem);. I would recommend doing treeView1.Items.Remove(treeView1.SelectedItem); where treeView1 is your TreeView control.

于 2013-08-06T19:57:38.480 回答