C#(四)右键菜单ContextMenuStrip实现对TreeView中结点的增删改操作

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

在这里插入图片描述

二、实现

首先在工具箱中拖拽一个ContextMenuStrip控件,对其进行编辑,双击编辑好的菜单项会自动生成对应的点击事件。
在这里插入图片描述
在对应的TreeView控件的属性中找到ContextMenuStrip,选择刚编辑好的ContextMenuStrip控件名。
在这里插入图片描述

//editMenuTree为TreeView控件名
        private void menuAddChildItem_Click(object sender, EventArgs e)//添加子菜单
        {
    
    
            if (editMenuTree.SelectedNode != null)
            {
    
    
                FrmAddOrEditMenuItem addMenuItem = new FrmAddOrEditMenuItem();//跳转到另一个窗口进行数据的输入
                addMenuItem.menuid = Convert.ToInt32(editMenuTree.SelectedNode.Name);//将选择结点的id传过去,id是作为结点的Name
                addMenuItem.flag = 0;//表示添加子菜单操作
                addMenuItem.ShowDialog();
                editMenuTree.Nodes.Clear();//先将TreeView中结点清空
                DisplayTreeView();//重新显示菜单树,相对于刷新
                editMenuTree.ExpandAll();//结点全部展开
            }

        }

        private void menuDeleteItem_Click(object sender, EventArgs e)//删除菜单
        {
    
    
            if (editMenuTree.SelectedNode != null)
            {
    
    
                if (editMenuTree.SelectedNode.Nodes.Count == 0)//当前结点不存在子节点可以删除
                {
    
    
                    TreeNode parent = editMenuTree.SelectedNode.Parent;//获取当前选中结点的父结点
                    DialogResult dr = MessageBox.Show("确认删除当前菜单?", "系统提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                    if (dr == DialogResult.OK)
                    {
    
    
                        string sql = "delete from t_menu where id = " + Convert.ToInt32(editMenuTree.SelectedNode.Name);
                        int result = db.ExecuteSql(sql);
                        if (result == 1)//该菜单已删除,判断其父菜单下是否还有子菜单,更新父菜单的isendnode
                        {
    
    
                            if (parent != null && parent.Nodes.Count == 0)
                            {
    
    
                                string sql1 = "update t_menu set isendnode = 1 where id =" + Convert.ToInt32(parent.Name);
                                if (db.ExecuteSql(sql1) != 1)
                                {
    
    
                                    MessageBox.Show("更新数据库isendnode字段失败!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                }
                            }
                            editMenuTree.Nodes.Clear();
                            DisplayTreeView();
                            editMenuTree.ExpandAll();
                        }
                        else
                        {
    
    
                            MessageBox.Show("删除失败!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }
                }
                else
                {
    
    
                    MessageBox.Show("该菜单下含有子菜单,不可删除!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }

        }



        private void menuEditItem_Click(object sender, EventArgs e)//编辑菜单
        {
    
    
            if (editMenuTree.SelectedNode != null)
            {
    
    
                FrmAddOrEditMenuItem editMenu = new FrmAddOrEditMenuItem();
                editMenu.flag = 1;//表示编辑结点操作
                editMenu.menuid = Convert.ToInt32(editMenuTree.SelectedNode.Name);
                editMenu.Text = "编辑菜单项";
                editMenu.ShowDialog();
                editMenuTree.Nodes.Clear();
                DisplayTreeView();
                editMenuTree.ExpandAll();
            }

        }

        private void menuAddParentItem_Click(object sender, EventArgs e)//添加一级菜单
        {
    
    
            if (editMenuTree.SelectedNode != null)
            {
    
    
                FrmAddOrEditMenuItem addParentItem = new FrmAddOrEditMenuItem();
                addParentItem.flag = 2;//表示添加一级菜单
                addParentItem.menuid = 0;
                addParentItem.Text = "添加一级菜单";
                addParentItem.ShowDialog();
                editMenuTree.Nodes.Clear();
                DisplayTreeView();
                editMenuTree.ExpandAll();
            }
        }
        

猜你喜欢

转载自blog.csdn.net/weixin_42684368/article/details/107649814