右键单击选择.Net TreeNode

Mar*_*tin 25 c# treeview user-interface winforms

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

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

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

Kal*_*son 52

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

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

treeView.MouseDown += (sender, args) =>
    treeView.SelectedNode = treeView.GetNodeAt(args.X, args.Y);
Run Code Online (Sandbox Code Playgroud)

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

treeView.NodeMouseClick += (sender, args) => treeView.SelectedNode = args.Node;
Run Code Online (Sandbox Code Playgroud)

  • 我同意.只需将此代码添加到我的Form的构造函数中就可以了.谢谢. (4认同)

Sas*_*nyi 16

是.这是NodeMouseClick事件的处理:

private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
      treeView1.SelectedNode = e.Node;
}
Run Code Online (Sandbox Code Playgroud)


nik*_*ias 5

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

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