TreeView拖拽节点改变节点顺序

TreeView拖拽节点改变节点顺序

代码如下:

 private void treeView2_ItemDrag(object sender, ItemDragEventArgs e)
        {
        	//文件夹不允许移动,只能移动表格,我在表格节点的TreeNode.ToolTipText中添加了表格信息,作为区分,当然也可以判定节点的TreeNode.Nodes.Count==0 来判断
            if ((e.Item as TreeNode).ToolTipText == null || (e.Item as TreeNode).ToolTipText == "")
            {
                MessageBox.Show("该文件夹不允许移动,请选择工程编辑目录表格!", "提示");
                return;
            }
            //开始进行拖放操作,将节点信息储存并将拖放的效果设置成移动
            this.DoDragDrop(e.Item, DragDropEffects.Move);
        }

        private void treeView2_DragEnter(object sender, DragEventArgs e)
        {
            //检测储存的在拖放数据中的数据是否是你要,判断数据类型,如果是就将拖放的效果设置成移动,不是则不再进行拖放操作
            if (e.Data.GetDataPresent(typeof(TreeNode)))
            {
                e.Effect = DragDropEffects.Move;
            }
            else
            {
                e.Effect = DragDropEffects.None;
            }
        }
        private void treeView2_DragDrop(object sender, DragEventArgs e)
        {

            Point Position = new Point(0, 0);//用于检索二位平面中的节点
            TreeNode myNode = null;//用于储存拖放数据中的数据
            if (e.Data.GetDataPresent(typeof(TreeNode)))
            {
                myNode = (TreeNode)(e.Data.GetData(typeof(TreeNode)));//得到数据
            }
            else
            {
                MessageBox.Show("当前操作错误!");
            }
            Position.X = e.X;
            Position.Y = e.Y;
            Position = treeView2.PointToClient(Position);
            TreeNode DropNode = this.treeView2.GetNodeAt(Position);//得到目标节点
            //1.目标节点不是空 2.目标节点和被拖拽节点是同一父节点 3.目标节点不是被拖拽节点本身
            if (DropNode != null && DropNode.Parent == myNode.Parent && DropNode != myNode)
            {
                TreeNode DragNode = myNode;
                int index = DropNode.Index;//获取目标节点的index值,用于插入被拖拽节点
                //将被拖拽节点从原来位置删除
                myNode.Remove();
                //将被拖拽节点插入到目标节点位置
                DropNode.Parent.Nodes.Insert(index, DragNode);
                this.treeView2.SelectedNode = DragNode;
                ///
                /*如果需要修改数据库可在此添加数据修改方法*/
                ///
            }
            else if (DropNode.Parent != myNode.Parent)
            {
                MessageBox.Show("表格'" + myNode.Text + "'不是'" + DropNode.Parent.Text + "'类型的表格,不能进行拖拽","提示");
            }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值