右键单击选择.Net TreeNode

当用户右键单击时,我试图在我的树视图上显示一个弹出菜单 – 允许他们选择要应用于所选节点的上下文敏感操作。

用户必须左键单击节点,然后右键单击以选择。

是否可以右键单击节点选择该节点 – 如果是,那么执行此操作的最佳方法是什么。

左右键单击都会触发单击事件并导致选择更改。 但是,在某些情况下(我还没有打算追查),选择将从右键单击的节点更改为最初选择的节点。

为了确保右键单击更改选择,您可以使用MouseDown事件强制更改所选节点:

 treeView.MouseDown += (sender, args) => treeView.SelectedNode = treeView.GetNodeAt(args.X, args.Y); 

正如其他海报所指出的那样,更好一点是使用NodeMouseClick事件:

 treeView.NodeMouseClick += (sender, args) => treeView.SelectedNode = args.Node; 

是。 这是NodeMouseClick事件的处理:

 private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { treeView1.SelectedNode = e.Node; } 

将上下文菜单条拖到窗体上,然后:

  private void treeView1_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { // Display context menu for eg: ContextMenu1.Show(); } }