C#实现treeview节点上下左右自由移动
以下是节点移动类NodeMove.cs源码:
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Windows.Forms;
- using System.Collections;
- namespace NodeMove
- {
- class NodeMove
- {
- private void MovUp(TreeNode ObjNode)
- {
- //----节点的向上移动
- if (ObjNode != null)
- {
- TreeNode newnode = new TreeNode();
- //--------如果选中节点为最顶节点
- if (ObjNode.Index == 0)
- {
- //-------------
- }
- else if (ObjNode.Index != 0)
- {
- newnode = (TreeNode)ObjNode.Clone();
- //-------------若选中节点为根节点
- if (ObjNode.Level == 0)
- {
- treeView1.Nodes.Insert(ObjNode.PrevNode.Index, newnode);
- }
- //-------------若选中节点并非根节点
- else if (ObjNode.Level != 0)
- {
- ObjNode.Parent.Nodes.Insert(ObjNode.PrevNode.Index, newnode);
- }
- ObjNode.Remove();
- ObjNode = newnode;
- }
- }
- }
- private void MovDown(TreeNode ObjNode)
- {
- //----节点的向下移动
- if (ObjNode != null)
- {
- TreeNode newnode = new TreeNode();
- //-------------如果选中的是根节点
- if (ObjNode.Level == 0)
- {
- //---------如果选中节点为最底节点
- if (ObjNode.Index == treeView1.Nodes.Count - 1)
- {
- //---------------
- }
- //---------如果选中的不是最底的节点
- else
- {
- newnode = (TreeNode)ObjNode.Clone();
- treeView1.Nodes.Insert(ObjNode.NextNode.Index + 1, newnode);
- ObjNode.Remove();
- ObjNode = newnode;
- }
- }
- //-------------如果选中节点不是根节点
- else if (ObjNode.Level != 0)
- {
- //---------如果选中最底的节点
- if (ObjNode.Index == ObjNode.Parent.Nodes.Count - 1)
- {
- //-----------
- }
- //---------如果选中的不是最低的节点
- else
- {
- newnode = (TreeNode)ObjNode.Clone();
- ObjNode.Parent.Nodes.Insert(ObjNode.NextNode.Index + 1, newnode);
- ObjNode.Remove();
- ObjNode = newnode;
- }
- }
- }
- }
- private void MovLeft(TreeNode ObjNode)
- {
- //-----节点向左移动(即成为原父节点的同级节点)
- if (ObjNode != null)
- {
- TreeNode newnode = new TreeNode();
- //-----如果接点是根节点
- if (ObjNode.Parent == null)
- {
- //---------
- }
- //-----如果选中节点不是根节点
- else
- {
- newnode = (TreeNode)ObjNode.Clone();
- //-----如果选中的节点是第一级子节点
- if (ObjNode.Level == 1)
- {
- treeView1.Nodes.Insert(ObjNode.Parent.Index + 1, newnode);
- }
- else
- {
- ObjNode.Parent.Parent.Nodes.Insert(ObjNode.Parent.Index + 1, newnode);
- }
- ObjNode.Remove();
- ObjNode = newnode;
- }
- }
- }
- private void MovRight(TreeNode ObjNode)
- {
- //-----节点的向右移动(即成为上一个同级节点的最后一个子节点)
- if (ObjNode != null)
- {
- TreeNode newnode = new TreeNode();
- //-----如果节点是叶子节点
- if (ObjNode.Nodes.Count == 0 && ObjNode.PrevNode == null)
- {
- //--------
- }
- //-----如果节点是第一个根节点
- else if (ObjNode.Parent == null && ObjNode.Index == 0)
- {
- //--------
- }
- //-----
- else
- {
- newnode = (TreeNode)ObjNode.Clone();
- ObjNode.PrevNode.Nodes.Insert(ObjNode.PrevNode.Nodes.Count, newnode);
- ObjNode.Remove();
- ObjNode = newnode;
- }
- }
- }
- }
- }
浙公网安备 33010602011771号