如何确定TreeView上的鼠标和键事件节点

如何确定TreeView上的鼠标和键事件节点

问题描述:

我有一个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); 
    } 
} 

你并不需要处理的键盘或鼠标事件,只是处理AfterSelect事件TreeView控制。当您使用鼠标或键盘选择节点时,事件将会增加。 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

我在问什么可以完成我之前评论中的陈述。 –