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


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