2017-10-17 1 views
1

나는 System.Windows.Forms.TreeView이 있습니다. 사용자는 마우스 나 키보드로 탐색 할 수 있습니다. 나는 둘 다에 대한 이벤트 처리기가 있습니다. 마우스 클릭 이벤트가 제대로 작동하지만 KeyEventArg에는 트리의 노드에 대한 지식이 전혀 없다는 점에서 문제가 있습니다 (TreeNodeMouseClickEventArgs처럼). 그럼 위와 아래 키를 사용할 때 TreeView에서 사용자가있는 위치를 코드가 어떻게 알 수 있습니까? 당신은 키보드 나 마우스 이벤트를 처리 할 필요가 없습니다마우스 및 키 이벤트 TreeView에서 노드를 확인하는 방법

MyView.Designer.cs

this.trvApproval.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.trvApproval_NodeMouseClick); 
this.trvApproval.KeyUp += new System.Windows.Forms.KeyEventHandler(this.trvApproval_KeyUp); 

MyView.cs

private void trvApproval_NodeMouseClick(object sender, System.Windows.Forms.TreeNodeMouseClickEventArgs eventArgs) 
{ 
    this.trvApproval.SelectedNode = eventArgs.Node; 
} 

private void trvApproval_KeyUp(object sender, System.Windows.Forms.KeyEventArgs eventArgs) 
{ 
    // No knowledge of tree in KeyEventArgs 
    if (eventArgs.KeyValue == Convert.ToChar(Keys.Down)) 
    { 
     System.Diagnostics.Trace.WriteLine("trvApproval_KeyPress Down: " + eventArgs.KeyValue); 
    } 
    else if (eventArgs.KeyValue == Convert.ToChar(Keys.Up)) 
    { 
     System.Diagnostics.Trace.WriteLine("trvApproval_KeyPress Up: " + eventArgs.KeyValue); 
    } 
} 

답변

1

, 그냥 TreeView 제어 AfterSelect 이벤트를 처리합니다. 마우스 또는 키보드를 사용하여 노드를 선택하면 이벤트가 발생합니다. e.Node은 찾고있는 노드입니다.

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) 
{ 
    //e.Node is what you are looking for. 
} 
+0

Oic .. 이벤트 처리기를 추가하는 방법은 무엇입니까? 'this.trvApproval.AfterSelect + =? ' –

+0

예, 다른 이벤트 핸들러와 같습니다. 또는 디자이너를 사용하십시오. –

+0

나는 이전 코멘트에서 성명서를 완성 할 것이 무엇인지 묻습니다. –

관련 문제