TreeView与ContextMenuStrip

C#相关 专栏收录该内容
8 篇文章 0 订阅

工作中经常用到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();
            }
        }


  • 0
    点赞
  • 0
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值