• C# treeview右键菜单 设置技巧


    //在NodeMouseClick事件中 再将cms设定成treeview的cms. 这样点空,不会出现右键菜单.      
             //右键菜单
           private void tv_Roots_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
            {
                if (e.Button != MouseButtons.Right) return;
                if (e.Node.Parent == null || e.Node == null) return;
                tv_Roots.SelectedNode = e.Node;
                cmsRouts.Show(tv_Roots, e.X, e.Y);
            }

    //不同节点对应不同右键菜单的实现

       用1个cms. 右键点击树节点时,根据节点类型生成cms的MenuItem项及点击事件

      private void tvOneRoot_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
            {
                if (e.Button != MouseButtons.Right) return;
                if (e.Node == null) return; //无节点
                if (e.Node.Level == 0) return;
                int nodeType = GetNodeTypeByGuid(e.Node.Name);
                tvOneRoot.SelectedNode = e.Node;
                InitcmsOneRout(nodeType);
                cmsOneRout.Show(tvOneRoot, e.X, e.Y);
            }
    
            /// <summary>
            /// 初始化cmsOneRoot 从nodetype
            /// </summary>
            /// <param name="nodetype"></param>
            private void InitcmsOneRout(int nodetype)
            {
                cmsOneRout = new ContextMenuStrip();
                if (nodetype == -1)
                {
                    ToolStripMenuItem tmiEditRoutStation = new ToolStripMenuItem("编辑飞行站点");
                    tmiEditRoutStation.Click += new EventHandler(tmiEditRoutStation_Click);
                    cmsOneRout.Items.Add(tmiEditRoutStation);
                    ToolStripMenuItem tmiMoveRouteStation = new ToolStripMenuItem("更改位置");
                    tmiMoveRouteStation.Click += new EventHandler(tmiMoveRouteStation_Click);
                    cmsOneRout.Items.Add(tmiMoveRouteStation);
                    ToolStripMenuItem tmiDeleRouteStation = new ToolStripMenuItem("删除飞行站点");
                    tmiDeleRouteStation.Click += new EventHandler(tmiDeleRouteStation_Click);
                    cmsOneRout.Items.Add(tmiDeleRouteStation);
                }
                else if (nodetype == 0)
                {
                    ToolStripMenuItem tmiEditRout = new ToolStripMenuItem("编辑飞行段属性");
                    tmiEditRout.Click += new EventHandler(tmiEditRout_Click);
                    cmsOneRout.Items.Add(tmiEditRout);
                    ToolStripMenuItem tmiDeleteRout = new ToolStripMenuItem("删除飞行段");
                    tmiDeleteRout.Click += new EventHandler(tmiDeleteRout_Click);
                    cmsOneRout.Items.Add(tmiDeleteRout);
                }
                else if (nodetype == 1)
                {
     
                }
                else if (nodetype == 2)
                {
    
                }
                else
                {
     
                }
    
            }
    
    void tmiEditRout_Click(object sender, EventArgs e)//编辑飞行段
            {
                string routId = tvOneRoot.SelectedNode.Name;
                RouteParameter rp = GetRouteParaByGuid(routId);
                FrmPointProperty frm = new FrmPointProperty(rp, 0, 1);
                frm.OnRoutInfoUpdated += new FrmPointProperty.DelegateRouteInfoUpdated(frm_OnRoutInfoUpdated);
                frm.ShowDialog();
            }
  • 相关阅读:
    人生苦短我学Java-1-Helloword
    python-51-MySQLdb查询返回dict格式
    IDEA/PyCharm等系列-会了这些设置编码舒服而效率又提高了一截
    jacoco-2-jenkins集成代码测试覆盖率
    jacoco-1-java代码测试覆盖率之本地环境初体验
    wordpress 安装提示 Error Establishing a Database Connection
    mysql 8.0 重置 root 账户密码
    Ubuntu 20.04 卸载 snapd
    VSCode 扩展选择快捷键插件 Quick and Simple Text Selection
    Swagger 响应数据 response 里包含动态变化的对象 key 的方法
  • 原文地址:https://www.cnblogs.com/imihiroblog/p/2531949.html
Copyright © 2020-2023  润新知