如何确定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.
}
Oic ..如何添加事件处理程序? 'this.trvApproval.AfterSelect + =?' –
是的,它就像其他事件处理程序。或者使用设计师。 –
我在问什么可以完成我之前评论中的陈述。 –