C# TreeView控件右键菜单获得当前节点的问题

发布时间:2020-06-18编辑:脚本学堂
C#操作TreeView控件上某个结点右键弹出菜单时,无法定位当前右键点击的节点,这里给出一个解决方法,有需要的朋友,可以参考下。

需要在TreeView控件上的某个节点上右键弹出菜单,在实际操作中无法定位当前右键点击的节点,SelectNode获得的是当前选中的节点,右键之后不能让当前右键点击的节点处于选中状态,只是左键选中哪个SelectNode就获得哪个节点。
我自己想到一个笨办法,虽然解决了问题,但总觉得不合心意。
把弹出菜单写到MouseUp事件里:

void TreeView_MouseUp(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Right)
    {
      viewForm.popupMenu1.ShowPopup(Cursor.Position);
      if (viewForm.resTree1.TreeView.GetNodeAt(e.X, e.Y) != null)
      {
          viewForm.resTree1.TreeView.SelectedNode = viewForm.resTree1.TreeView.GetNodeAt(e.X, e.Y);
      }
    }
}

总结:可以通过鼠标的位置获得当前节点,从而让它处于选中状态。
哪位有更好的方法,欢迎分享一下。