2013-08-06 4 views
2

키보드의 삭제 버튼을 눌러 TreeViewItem에서 자식 노드를 삭제하고 싶습니다. 이 작업을 시도하려면 SelectedItem을 사용하고 있습니다. 거기에서삭제 버튼이있는 TreeViewItem 삭제

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

내 프로그램이 삭제 작업을 수행해야하는 함수 호출 :

현재 내 코드 숨김에서 KeyDown 이벤트를 사용하고

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

이 무엇 I 시도해 봤는데, 내 인생에서 왜 효과가 없는지 모르겠다. 전에 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

그것은 R 보인다 문제는 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

나는이 질문이 아니라 오래 알고 있지만, 같은 일을 (Delete 키를 누르면 사용자 검출시 트 리뷰 노드를 삭제)을하는 동안 나는 그것을 가로 질러왔다. 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); 
     } 
    } 
}