C#实现treeview节点上下左右自由移动

以下是节点移动类NodeMove.cs源码:

 

[c-sharp:nogutter] view plaincopyprint?
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4. using System.Windows.Forms;  
  5. using System.Collections;  
  6.   
  7. namespace NodeMove  
  8. {  
  9.     class NodeMove  
  10.     {  
  11.         private void MovUp(TreeNode ObjNode)  
  12.         {  
  13.             //----节点的向上移动   
  14.             if (ObjNode != null)  
  15.             {  
  16.                 TreeNode newnode = new TreeNode();  
  17.                 //--------如果选中节点为最顶节点   
  18.                 if (ObjNode.Index == 0)  
  19.                 {  
  20.                     //-------------   
  21.                 }  
  22.                 else if (ObjNode.Index != 0)  
  23.                 {  
  24.                     newnode = (TreeNode)ObjNode.Clone();  
  25.                     //-------------若选中节点为根节点   
  26.                     if (ObjNode.Level == 0)  
  27.                     {  
  28.                         treeView1.Nodes.Insert(ObjNode.PrevNode.Index, newnode);  
  29.                     }  
  30.                     //-------------若选中节点并非根节点   
  31.                     else if (ObjNode.Level != 0)  
  32.                     {  
  33.                         ObjNode.Parent.Nodes.Insert(ObjNode.PrevNode.Index, newnode);  
  34.                     }  
  35.                     ObjNode.Remove();  
  36.                     ObjNode = newnode;  
  37.                 }  
  38.   
  39.             }  
  40.         }  
  41.   
  42.         private void MovDown(TreeNode ObjNode)  
  43.         {  
  44.             //----节点的向下移动   
  45.             if (ObjNode != null)  
  46.             {  
  47.                 TreeNode newnode = new TreeNode();  
  48.                 //-------------如果选中的是根节点   
  49.                 if (ObjNode.Level == 0)  
  50.                 {  
  51.                     //---------如果选中节点为最底节点   
  52.                     if (ObjNode.Index == treeView1.Nodes.Count - 1)  
  53.                     {  
  54.                         //---------------   
  55.                     }  
  56.                     //---------如果选中的不是最底的节点   
  57.                     else  
  58.                     {  
  59.                         newnode = (TreeNode)ObjNode.Clone();  
  60.                         treeView1.Nodes.Insert(ObjNode.NextNode.Index + 1, newnode);  
  61.                         ObjNode.Remove();  
  62.                         ObjNode = newnode;  
  63.   
  64.                     }  
  65.                 }  
  66.                 //-------------如果选中节点不是根节点   
  67.                 else if (ObjNode.Level != 0)  
  68.                 {  
  69.                     //---------如果选中最底的节点   
  70.                     if (ObjNode.Index == ObjNode.Parent.Nodes.Count - 1)  
  71.                     {  
  72.                         //-----------   
  73.                     }  
  74.                     //---------如果选中的不是最低的节点   
  75.                     else  
  76.                     {  
  77.                         newnode = (TreeNode)ObjNode.Clone();  
  78.                         ObjNode.Parent.Nodes.Insert(ObjNode.NextNode.Index + 1, newnode);  
  79.                         ObjNode.Remove();  
  80.                         ObjNode = newnode;  
  81.                     }  
  82.                 }  
  83.   
  84.             }  
  85.         }  
  86.   
  87.         private void MovLeft(TreeNode ObjNode)  
  88.         {  
  89.             //-----节点向左移动(即成为原父节点的同级节点)   
  90.             if (ObjNode != null)  
  91.             {  
  92.                 TreeNode newnode = new TreeNode();  
  93.                 //-----如果接点是根节点   
  94.                 if (ObjNode.Parent == null)  
  95.                 {  
  96.                     //---------   
  97.                 }  
  98.                 //-----如果选中节点不是根节点   
  99.                 else  
  100.                 {  
  101.                     newnode = (TreeNode)ObjNode.Clone();  
  102.                     //-----如果选中的节点是第一级子节点   
  103.                     if (ObjNode.Level == 1)  
  104.                     {  
  105.                         treeView1.Nodes.Insert(ObjNode.Parent.Index + 1, newnode);  
  106.                     }  
  107.                     else  
  108.                     {  
  109.                         ObjNode.Parent.Parent.Nodes.Insert(ObjNode.Parent.Index + 1, newnode);  
  110.                     }  
  111.                     ObjNode.Remove();  
  112.                     ObjNode = newnode;  
  113.   
  114.                 }  
  115.             }  
  116.   
  117.         }  
  118.   
  119.         private void MovRight(TreeNode ObjNode)  
  120.         {  
  121.             //-----节点的向右移动(即成为上一个同级节点的最后一个子节点)   
  122.             if (ObjNode != null)  
  123.             {  
  124.                 TreeNode newnode = new TreeNode();  
  125.                 //-----如果节点是叶子节点   
  126.                 if (ObjNode.Nodes.Count == 0 && ObjNode.PrevNode == null)  
  127.                 {  
  128.                     //--------   
  129.                 }  
  130.                 //-----如果节点是第一个根节点   
  131.                 else if (ObjNode.Parent == null && ObjNode.Index == 0)  
  132.                 {  
  133.                     //--------   
  134.                 }  
  135.                 //-----   
  136.                 else  
  137.                 {  
  138.                     newnode = (TreeNode)ObjNode.Clone();  
  139.                     ObjNode.PrevNode.Nodes.Insert(ObjNode.PrevNode.Nodes.Count, newnode);  
  140.                     ObjNode.Remove();  
  141.                     ObjNode = newnode;  
  142.                 }  
  143.             }  
  144.         }  
  145.     }  
  146. }  
posted @ 2012-08-15 20:03  Net-Spider  阅读(1089)  评论(0)    收藏  举报