TreeView與ContextMenuStrip

工作中經常用到TreeView控件,綁定響應右鍵快捷菜單。但經常忘了它的一些用法,幾個要注意的點,每次用到都去查,翻看一些資料。於是,整理了一番,記錄下來,便於以後隨時查閱。

1、界面設計


一個treeview控件,一個ContextMenuScript控件。ContextMenuScript添加一個Item刪除

TreeView添加MouseUp事件。Item添加Click事件

2、代碼

/// <summary>
        /// TreeView的MouseUp事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void treeView1_MouseUp(object sender, MouseEventArgs e)
        {
            //根據鼠標在treeview點擊的位置獲取節點
            //TreeView控件,SelectNode屬性更改只響應左鍵點擊事件。右鍵點擊,按下選擇了節點。彈起,選擇丟失。
            //實際工作中,經常需要面對的是右鍵直接選擇,並彈出快捷菜單。故在鼠標彈起時,根據位置,設定SelectNode
            this.treeView1.SelectedNode = this.treeView1.GetNodeAt(e.X, e.Y);

            if (e.Button == MouseButtons.Right)//僅響應右鍵
            {
                //Node.Levle屬性,確定是哪一級節點
                if (this.treeView1.SelectedNode != null && this.treeView1.SelectedNode.Level == 1)
                {
                    //Show兩個參數,Control和Point。
                    //this指定相對的控件位置
                    //Point爲treeview點擊的位置,20是爲了顯示ContextMenuStript時不遮擋Node,可以看到點擊的Node
                    this.contextMenuStrip1.Show(this,new Point(e.X+20,e.Y));
                }
            }
        }

        /// <summary>
        /// ContextMenuStript選項,toolStripMenuItem點擊事件
        /// 刪除
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void toolStripMenuItem_Delete_Click(object sender, EventArgs e)
        {
            if (this.treeView1.SelectedNode != null)
            {
                //將選擇的節點刪除
                this.treeView1.SelectedNode.Remove();
            }
        }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章