C# TreeView 右鍵菜單


方法一:

在winform中,添加一個contextMenuStrip1,設置TreeView的屬性ContextMenuStrip為contextMenuStrip1,並為這個contextMenuStrip1添加幾個菜單項,點擊每個菜單項,實現其click事件,然后添加treeivew的nodemouseclick事件,類似如下代碼:

//右鍵菜單
       private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            if (e.Button != MouseButtons.Right) return;
            if (e.Node.Parent == null || e.Node == null) return;
            treeView1.SelectedNode = e.Node;
            contextMenuStrip1.Show(tv_Roots, e.X, e.Y);
        }

  void contextMenuStripItem_Click(object sender, EventArgs e)//編輯飛行段
    {
    }
 
        

方法二:不同節點對應不同的右鍵菜單(摘自http://www.cnblogs.com/imihiroblog/archive/2012/06/02/2531949.html)

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();
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM