C# 移动TreeView的节点的类.

来源:互联网 发布:产品经理必备的软件 编辑:程序博客网 时间:2024/05/22 16:08

使用方法~~.

  1.    public TreeControlMoveNode m_Move;
  2.         private void Form1_Load(object sender, EventArgs e)
  3.         {
  4.             m_Move = new TreeControlMoveNode(treeView1);
  5.             m_Move.Event_MoveStar += new TreeControlMoveNode.MoveStar(m_Move_Event_MoveStar); ;
  6.             m_Move.Event_MoveOver += new TreeControlMoveNode.MoveOver(m_Move_Event_MoveOver);
  7.          
  8.         }
  9.         void m_Move_Event_MoveOver(TreeNode e)
  10.         {
  11.             this.Text ="移动完成"+ e.Text;
  12.         }
  13.         void m_Move_Event_MoveStar(TreeNode e, ref bool move)
  14.         {
  15.             this.Text ="开始移动" +e.Text;
  16.         }

 

 

 

下面是全部的类

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Windows.Forms;
  5. namespace Zgke.WindowFrom.Window.Controls
  6. {
  7.     /// <summary>
  8.     /// TreeView的节点移动
  9.     /// zgke@sina.com
  10.     /// QQ:116149
  11.     /// </summary>
  12.     public class TreeControlMoveNode
  13.     {
  14.         private bool m_Move = false;
  15.         /// <summary>
  16.         /// 是否能移动子节点
  17.         /// </summary>
  18.         public bool Move { get { return m_Move; } set { m_Move = value; } }
  19.         private TreeNode m_SelectNode;
  20.         public TreeControlMoveNode(TreeView TreeNode)
  21.         {
  22.             TreeNode.MouseDown += new MouseEventHandler(TreeNode_MouseDown);
  23.             TreeNode.MouseUp += new MouseEventHandler(TreeNode_MouseUp);
  24.             TreeNode.MouseMove += new MouseEventHandler(TreeNode_MouseMove);
  25.             m_Move = true;
  26.         }
  27.         public delegate void MoveStar(TreeNode e,ref bool move);
  28.         public event MoveStar Event_MoveStar;
  29.         public delegate void MoveOver(TreeNode e);
  30.         public event MoveOver Event_MoveOver;
  31.         
  32.       
  33.         private void TreeNode_MouseDown(object sender, MouseEventArgs e)
  34.         {
  35.             if (!m_Move) return;
  36.             if (e.Button == MouseButtons.Left)
  37.             {
  38.                 TreeView _Tree = (TreeView)sender;
  39.                 m_SelectNode = _Tree.GetNodeAt(e.X, e.Y);
  40.                 bool _Move=true;
  41.                 if (m_SelectNode != null)
  42.                 {
  43.                     Event_MoveStar(m_SelectNode,ref _Move);
  44.                 }
  45.                 if (!_Move) m_SelectNode = null;
  46.             }
  47.         }
  48.         private void TreeNode_MouseMove(object sender, MouseEventArgs e)
  49.         {
  50.             if (!m_Move) return;
  51.             if (m_SelectNode == nullreturn;
  52.             if (e.Button == MouseButtons.Left)
  53.             {
  54.                 TreeView _Tree = (TreeView)sender;
  55.                 TreeNode _Node = _Tree.GetNodeAt(e.X, e.Y);
  56.                 if (_Node == nullreturn;
  57.                 if (_Node.Equals(m_SelectNode)) return;
  58.                 if (!_Node.IsExpanded) _Node.Toggle();
  59.                 _Tree.SelectedNode = _Node;
  60.             }
  61.         }
  62.         private void TreeNode_MouseUp(object sender, MouseEventArgs e)
  63.         {
  64.             if (!m_Move) return;
  65.             if (m_SelectNode == nullreturn;
  66.             if (e.Button == MouseButtons.Left)
  67.             {
  68.                 TreeView _Tree = (TreeView)sender;
  69.                 TreeNode _Node = _Tree.GetNodeAt(e.X, e.Y);
  70.                 if (_Node == nullreturn;
  71.                 if (_Node.Equals(m_SelectNode)) return;
  72.                 m_SelectNode.Remove();
  73.                 _Node.Nodes.Add(m_SelectNode);
  74.                 Event_MoveOver(m_SelectNode);
  75.             }
  76.         }
  77.       
  78.     }
  79. }

 

原创粉丝点击