使用方法~~.
- public TreeControlMoveNode m_Move;
- private void Form1_Load(object sender, EventArgs e)
- {
- m_Move = new TreeControlMoveNode(treeView1);
- m_Move.Event_MoveStar += new TreeControlMoveNode.MoveStar(m_Move_Event_MoveStar); ;
- m_Move.Event_MoveOver += new TreeControlMoveNode.MoveOver(m_Move_Event_MoveOver);
- }
- void m_Move_Event_MoveOver(TreeNode e)
- {
- this.Text ="移动完成"+ e.Text;
- }
- void m_Move_Event_MoveStar(TreeNode e, ref bool move)
- {
- this.Text ="开始移动" +e.Text;
- }
下面是全部的类
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Windows.Forms;
- namespace Zgke.WindowFrom.Window.Controls
- {
- /// <summary>
- /// TreeView的节点移动
- /// zgke@sina.com
- /// QQ:116149
- /// </summary>
- public class TreeControlMoveNode
- {
- private bool m_Move = false;
- /// <summary>
- /// 是否能移动子节点
- /// </summary>
- public bool Move { get { return m_Move; } set { m_Move = value; } }
- private TreeNode m_SelectNode;
- public TreeControlMoveNode(TreeView TreeNode)
- {
- TreeNode.MouseDown += new MouseEventHandler(TreeNode_MouseDown);
- TreeNode.MouseUp += new MouseEventHandler(TreeNode_MouseUp);
- TreeNode.MouseMove += new MouseEventHandler(TreeNode_MouseMove);
- m_Move = true;
- }
- public delegate void MoveStar(TreeNode e,ref bool move);
- public event MoveStar Event_MoveStar;
- public delegate void MoveOver(TreeNode e);
- public event MoveOver Event_MoveOver;
- private void TreeNode_MouseDown(object sender, MouseEventArgs e)
- {
- if (!m_Move) return;
- if (e.Button == MouseButtons.Left)
- {
- TreeView _Tree = (TreeView)sender;
- m_SelectNode = _Tree.GetNodeAt(e.X, e.Y);
- bool _Move=true;
- if (m_SelectNode != null)
- {
- Event_MoveStar(m_SelectNode,ref _Move);
- }
- if (!_Move) m_SelectNode = null;
- }
- }
- private void TreeNode_MouseMove(object sender, MouseEventArgs e)
- {
- if (!m_Move) return;
- if (m_SelectNode == null) return;
- if (e.Button == MouseButtons.Left)
- {
- TreeView _Tree = (TreeView)sender;
- TreeNode _Node = _Tree.GetNodeAt(e.X, e.Y);
- if (_Node == null) return;
- if (_Node.Equals(m_SelectNode)) return;
- if (!_Node.IsExpanded) _Node.Toggle();
- _Tree.SelectedNode = _Node;
- }
- }
- private void TreeNode_MouseUp(object sender, MouseEventArgs e)
- {
- if (!m_Move) return;
- if (m_SelectNode == null) return;
- if (e.Button == MouseButtons.Left)
- {
- TreeView _Tree = (TreeView)sender;
- TreeNode _Node = _Tree.GetNodeAt(e.X, e.Y);
- if (_Node == null) return;
- if (_Node.Equals(m_SelectNode)) return;
- m_SelectNode.Remove();
- _Node.Nodes.Add(m_SelectNode);
- Event_MoveOver(m_SelectNode);
- }
- }
- }
- }