未知昵称 2018-06-13 02:20 采纳率: 50%
浏览 2091
已采纳

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条回答

  • 专家-郭老师 Java领域新星创作者 2018-06-13 03:03
    关注
            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条)

报告相同问题?

悬赏问题

  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型