2013-08-06 2 views
2

Я хочу, чтобы иметь возможность удалять дочерние узлы с TreeViewItem, нажав кнопку удаления на клавиатуре. Я использую SelectedItem, чтобы попытаться это сделать.Удалить TreeViewItem с кнопкой Delete

В настоящее время я использую 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?)

ответ

0

кажется, что г Проблема с eal связана с Tree.Remove(SelectedItem);. Я бы порекомендовал сделать treeView1.Items.Remove(treeView1.SelectedItem);, где treeView1 - ваш TreeView элемент управления.

+0

Я включил его и обновил свой код. Узел все еще не удаляет из дерева. –

+0

Вы пробовали отлаживать его? Он даже ввел функцию KeyDown? – inixsoftware

+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 
0

Я знаю, этот вопрос довольно старый, но я наткнулся на него, пытаясь сделать то же самое (удаление узла TreeView при обнаружении пользователь может нажать кнопку Удалить). Не знаете, почему вы пытаетесь удалить из коллекции Items, но удаление SelectedNode из коллекции Nodes должно работать нормально. Одно не упоминается, что SelectedItem (или SelectedNode) может быть нулевым, поэтому вы, вероятно, захотите проверить на это.

private void Tree_One_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Delete) 
    { 
     if (Tree.SelectedNode != null) 
     { 
      Tree.Nodes.Remove(Tree.SelectedNode); 
     } 
    } 
} 
Смежные вопросы