`
tiansoft
  • 浏览: 175622 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

对treeview节点的复制,粘贴和出现右击菜单

SQL 
阅读更多
在写项目的时候,我们都会在按钮上去实现一些添加,修改等等的操作,有时候复制,粘贴等大部门都是用按钮的形式,如果是右击往往这样会让用户感觉到软件的灵活性,因为用户在使用操作系统的时候都习惯了右击对数据进行复制,粘贴等操作,所有在树形节点上除了用按钮的形式实现复制,粘贴等功能外,我想菜单上也能够实现的话,会非常的好,能够给用户很好的体验。
实现粘贴功能代码如下:
/// <summary>
        /// 实现粘贴的功能
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void barButtonItem粘贴_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            //如果没有复制
            if (this.copyNode == null)
            {
                return;
            }
            //如果目标节点为空或目标节点在外面
            if (this.treeView1.SelectedNode == null || this.treeView1.SelectedNode == this.treeView1.Nodes[0])
            {
                MessageBox.Show("不能粘贴在所有部门以外", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            //如果目标节点是自己或自己的子节点
            if (this.treeView1.SelectedNode == this.copyNode || !IsNode(copyNode))
            {
                MessageBox.Show("不能粘贴在自己及自己的子节点上", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            //添加节点
            AddNode(this.treeView1.SelectedNode, this.copyNode);
            //刷新
            CreateTree(this.treeView2, "All");
        }
/// <summary>
        /// 粘贴子接点
        /// </summary>
        /// <param name="sNode"></param>
        /// <param name="cNode"></param>
        public void AddNode(TreeNode sNode, TreeNode cNode)
        {
            //取出当前节点的编号
            int mId = ((TreeNodeClass)sNode.Tag).ID;
            //连接数据库
            SqlConnection sqlConn = new SqlConnection(sqlConnectionBuilder.ConnectionString);
            SqlCommand comm = sqlConn.CreateCommand();
            sqlConn.Open();
            try
            {
                //执行插入语句
                comm.CommandText = " INSERT INTO 人事部门信息(名称,父编号,停止,单位编号) VALUES('" + cNode.Text + "'," + mId + ",0,@单位编号); SELECT @@IDENTITY";
                //以下为了防止sql语句攻击,较安全
                comm.Parameters.Add("@单位编号", SqlDbType.Int);
                comm.Parameters["@单位编号"].Value = ((TreeNodeClass)sNode.Tag).bh;
                //获取目标节点的编号
                int copyId = int.Parse(comm.ExecuteScalar().ToString());
                //执行更改语句
                comm.CommandText = " UPDATE 人事部门信息 SET 顺序号 = 编号 WHERE 编号 = " + copyId;
                comm.ExecuteNonQuery();
                //创建类实例
                TreeNodeClass tag = new TreeNodeClass();
                //为类的属性赋值
                tag.ID = copyId;
                tag.Text = cNode.Text;
                tag.Type = "名称";
                tag.bh = ((TreeNodeClass)sNode.Tag).bh;
                //取出要复制的节点值
                TreeNode node = new TreeNode(cNode.Text);
                //设置图标索引
                node.ImageIndex = 1;
                node.SelectedImageIndex = 1;
                node.Tag = tag;
                //添加新的节点
                sNode.Nodes.Add(node);
                //如果要复制的数量小于1
                if (cNode.Nodes.Count < 1)
                {
                    return;
                }
                //依次添加
                for (int i = 0; i < cNode.Nodes.Count; i++)
                {
                    AddNode(node, cNode.Nodes[i]);
                }
            }
            catch (System.Exception e)
            {
                MessageBox.Show(e.Message);
            }
            finally
            {
                //关闭数据库资源
                close(comm,sqlConn);
            }

        }
实现复制的功能:
/// <summary>
        /// 实现复制的功能
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void barButtonItem复制_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            // 如果没有选中节点或没有父节点
            if (this.treeView1.SelectedNode == null || this.treeView1.SelectedNode.Parent == null)
            {
                MessageBox.Show("根节点不能复制", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            //把当前节点的信息赋值给一个节点
            this.copyNode = this.treeView1.SelectedNode;
        }
上面就完成了在树节点上对数据的复制,粘贴了,然后我们在实现右击功能,把上面的功能添加到事件中去:
/// <summary>
        /// 右击事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MouseDown右击事件(object sender, MouseEventArgs e)
        {
            //判断你点的是不是右键
            if (e.Button == MouseButtons.Right)
            {
                //获取右击的位置
                Point ClickPoint = new Point(e.X, e.Y);
                //取出位置,赋给节点
                TreeNode CurrentNode = treeView1.GetNodeAt(ClickPoint);
                //判断你点的是不是一个节点
                if (CurrentNode != null)
                {
                   //如果是节点,就出现右击菜单
                   CurrentNode.ContextMenuStrip = contextMenuStrip右击菜单;
                        
                }
                //选中这个节点
                treeView1.SelectedNode = CurrentNode;
                }
            }
        /// <summary>
        /// 右击粘贴事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void 粘贴ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            barButtonItem粘贴.PerformClick();
        }
        /// <summary>
        /// 右击复制事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void 复制ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            barButtonItem复制.PerformClick();
        }
这样程序就更加的完美了
分享到:
评论

相关推荐

    C#TreeView右键菜单操作在编辑树节点

    总之,通过结合`TreeView`控件和`ContextMenuStrip`,我们可以创建一个功能丰富的C#应用,允许用户通过右键菜单方便地编辑、添加、删除和复制/粘贴树节点。这不仅提高了用户体验,也为数据操作提供了直观的界面。

    C#树形菜单多个子节点剪切复制

    首先,要实现树形菜单的剪切和复制功能,我们需要利用`TreeView`控件的事件系统。`TreeView`控件有两个关键的事件:`MouseDown`和`MouseUp`,它们分别在鼠标按钮按下和释放时触发,这为我们提供了实现选择和操作节点...

    C#TreeView窗体版点击右键弹出菜单+直接修改名称+新建节点

    综上所述,通过结合`TreeView`控件、右键菜单、`ContextMenuStrip`和`TreeNode`对象的操作,我们可以实现一个功能完善的C# Windows窗体应用,允许用户方便地对`TreeView`中的节点进行编辑和创建。

    vb.net中treeview节点的添加和删除

    本篇文章将深入探讨如何在VB.NET中进行TreeView节点的添加和删除操作。 一、添加节点 1. 创建基本节点:在VB.NET中,可以使用TreeNode类来创建一个新节点。例如,以下代码创建了一个名为"根节点"的基本节点: ```...

    C#TreeView使用(节点拖曳、节点右键菜单)

    在本教程中,我们将深入探讨如何利用C#来实现`TreeView`控件的功能,特别是节点的拖放操作和右键菜单功能,以及如何遍历`TreeView`的节点。 ### 一、节点拖放操作 1. **启用拖放功能**:首先,你需要启用`TreeView...

    删除TreeView节点以及其子节点

    2. **删除节点**:在Delphi中,可以使用`TreeView1.Items`集合来访问和操作所有节点。删除单个节点通常使用`Delete`方法,例如`TreeView1.Items[index].Delete`,这里的`index`是目标节点的索引。但是,这只会删除...

    vb_Treeview节点上下左右移动.rar_VB树节点功能_adventurehpj_vb treeview_vb tree

    标题"vb_Treeview节点上下左右移动.rar_VB树节点功能_adventurehpj_vb treeview_vb tree"暗示了这个压缩包包含的是一个VB应用程序,它实现了对Treeview控件节点的动态操作,如移动、添加和删除。这些功能对于创建...

    C# treeView节点动态删除和添加示例,本源码演示了创建一个treeView父节点

    C# treeView节点动态删除和添加示例,本源码演示了创建一个treeView父节点,创建了三个子节点,然后演示了将这3个子节点添加到父节点中,最后演示了使用Remove方法移除指定的TreeView节点项,添加节点和删除节点定义...

    C#实现treeview节点三种选择状态

    通常,TreeView控件的节点支持两种选择状态:选中(Checked)和未选中(Unchecked)。然而,有时候开发者可能需要更复杂的交互,比如实现一种半选(Partially Checked)状态,尤其是在处理具有子节点的树形结构时。...

    树形控件添加右键菜单

    在Windows应用程序开发中,树形控件(TreeView)是一种常用的数据...在实际项目中,可以根据需求添加更多自定义的功能,比如节点的编辑、复制、粘贴等。记住,良好的用户界面设计能够显著提升用户的操作效率和满意度。

    实现Treeview节点拖拽功能

    本项目实现了`TreeView`节点的拖放(Drag and Drop)功能,这对于用户交互和数据操作非常实用。以下是对这个实现的详细解析: 1. **C#编程语言**: 这个实现是用C#编写的,C#是.NET Framework的主要编程语言,提供...

    WPF TreeView拖拽节点变换位置

    通过理解和实现上述步骤,开发者可以创建一个允许用户自由调整`TreeView`节点顺序的动态WPF应用,从而提高用户交互性和应用的易用性。在实际开发过程中,可能还需要根据具体需求进行调整和优化,以满足特定的业务...

    C#中TreeView节点的自定义绘制方法

    有时,为了满足特定的界面设计需求,我们需要自定义`TreeView`节点的外观,比如改变节点的颜色、字体、图标等。本篇文章将深入探讨如何在C#中实现`TreeView`节点的自定义绘制。 首先,要实现自定义绘制,我们需要...

    winform保持TreeView节点展开和折叠的状态

    winform保持TreeView节点展开和折叠的状态 只需调用两个方法即可非常方面

    VB实现Treeview树形菜单节点拖动、增加、删除实例源码

    本实例源码着重讲解如何利用VB来实现Treeview控件的节点拖动、增加与删除功能。下面将详细介绍这三个关键操作的具体实现。 一、Treeview节点拖动 拖动节点是提升用户交互体验的重要特性。在VB中,我们需要使用...

    Treeview在winform中的运用(从数据库动态添加节点,增加节点、删除节点、复制节点)

    在本文中,我们将深入探讨如何在Winform应用中有效地利用Treeview控件,特别是在与数据库交互时动态添加、修改和管理节点。 1. **动态添加节点** 当你需要从数据库中获取数据并展示在Treeview上时,首先需要连接到...

    js获取treeview点击节点的值

    详细介绍了js获取asp.net treeview 控件点击节点的值。点击treeview节点不提交网页

    VB中Treeview 树形菜单节点拖动、增加、删除实例

    本实例主要关注`TreeView`控件的节点操作,包括拖动、增加和删除节点。下面将详细阐述这些功能的实现方法。 一、拖动节点 在`TreeView`控件中,拖放操作可以通过响应`MouseDown`、`MouseMove`和`MouseUp`事件来实现...

    treeview节点选中后添加背景色

    在实际应用中,我们经常需要对TreeView的节点进行交互性操作,如改变节点的背景色来突出显示当前选中的节点。本文将深入探讨如何使用JavaScript来实现“treeview节点选中后添加背景色”,以及在鼠标移开后仍然保持...

    TreeView节点的拖动效果

    本教程将深入探讨如何实现TreeView节点的拖动效果,使用户能够将A节点拖动到B节点下,从而让A节点成为B节点的子节点。 首先,我们需要开启TreeView控件的拖放功能。在代码中,可以通过设置`AllowDrop`属性为`true`...

Global site tag (gtag.js) - Google Analytics