C#(二)TreeView实现双击修改菜单结点名称

一、效果图(整个项目源码

1、可编辑状态下
在这里插入图片描述

2、修改成功后
在这里插入图片描述

二、实现代码

首先为TreeView控件生成一个双击事件,选择闪电一样的按钮,找到 DoubleClick 这一项双击,会自动生成相应的事件,同样方法生成 MouseDown 事件和 AfterLabelEdit 事件。
在这里插入图片描述

		private Point pi;//定义一个坐标变量
		//editMenuTree为TreeView的Name
        private void editMenuTree_MouseDown(object sender, MouseEventArgs e)//当鼠标指针位于控件上并按下鼠标键时发生
        {
            pi = new Point(e.X, e.Y);//记录当前位置
        }

        private void editMenuTree_DoubleClick(object sender, EventArgs e)
        {
            TreeNode node = this.editMenuTree.GetNodeAt(pi);//检索位于指定点的树节点
            if (pi.X >= node.Bounds.Left && pi.X <= node.Bounds.Right)//当鼠标双击的位置在某个结点上时
            {
                editMenuTree.LabelEdit = true;//开启树结点的标签文本编辑状态
                if (!editMenuTree.SelectedNode.IsEditing)
                {
                    editMenuTree.SelectedNode.BeginEdit();//使该结点进入编辑状态
                }
            }
        }

        private void editMenuTree_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)//编辑状态结束时触发
        {
            if(e.Label != null)
            {
                if (e.Label.Trim().Length > 0)//输入的值不为空
                {
                    string sql = string.Format("update t_menu set menuname = '{0}' where id = {1}",e.Label.Trim(),Convert.ToInt32(e.Node.Name));//进行更新操作
                    if (db.ExecuteSql(sql) != 1)//执行sql语句失败
                    {
                        e.CancelEdit = true;//取消当前编辑,恢复到最初状态
                        MessageBox.Show("修改失败!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    e.CancelEdit = true;
                    MessageBox.Show("菜单名称不能为空!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
            
        }
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值