以下是节点移动类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; } } } } }