未知昵称
2018-06-13 02:20
采纳率: 89.7%
浏览 2.0k

C#treeview不同节点触发不同的右键菜单

  private void treeView1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)//判断你点的是不是右键
            {
                Point ClickPoint = new Point(e.X, e.Y);
                TreeNode CurrentNode = treeView1.GetNodeAt(ClickPoint);
                if (CurrentNode != null && true == CurrentNode.Checked)//判断你点的是不是一个节点
                if (CurrentNode != null)
                {
                   switch (CurrentNode.Name)//根据不同节点显示不同的右键菜单,当然你可以让它显示一样的菜单
                    {
                        case "":
                            CurrentNode.ContextMenuStrip = contextMenuStrip1;
                            break;

                        default:
                            break;
                    }
                    treeView1.SelectedNode = CurrentNode;//选中这个节点
                }
            }
        }

如上所示,所有的节点右键菜单都是一样的,我把代码改成如下所示的,好像右键菜单不显示了?不应该是名字叫ImplementationDataTypes显示右键菜单吗?
图片说明

  switch (CurrentNode.Name)//根据不同节点显示不同的右键菜单,当然你可以让它显示一样的菜单

                        case "ImplementationDataTypes":
                            CurrentNode.ContextMenuStrip = contextMenuStrip1;
                            break;

                        default:
                            break;
  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • 已采纳
            if (CurrentNode != null)
                {
                   switch (CurrentNode.Text)//根据不同节点显示不同的右键菜单,当然你可以让它显示一样的菜单
                    {
                        case "xxxx1":
                            contextMenuStrip1.Items[0].Visible = false;
                            break;
                                                        case "xxxx2":
                            contextMenuStrip1.Items[1].Visible = false;
                            break;
                                                        case "xxxx3":
                            contextMenuStrip1.Items[2].Visible = false;
                            break;
    
                        default:
                            break;
                                                        //放最后
                                                        CurrentNode.ContextMenuStrip = contextMenuStrip1;
                    }
                    treeView1.SelectedNode = CurrentNode;//选中这个节点
                }
    

    这样你是否更直观点?

    评论
    解决 无用
    打赏 举报
  • 查看更多回答(5条)

相关推荐 更多相似问题