c# 实现鼠标拖拽TreeView节点 [转]

  //  2009-08-25 Jacky
         private   void  treeView2_ItemDrag( object  sender, ItemDragEventArgs e)
        {
            
if  (e.Button  ==  MouseButtons.Left)
            {
                DoDragDrop(e.Item, DragDropEffects.Move);
            }
        }

        
private   void  treeView2_DragEnter( object  sender, DragEventArgs e)
        {
            
if  (e.Data.GetDataPresent( " System.Windows.Forms.TreeNode " ))
            {
                e.Effect 
=  DragDropEffects.Move;
            }
            
else
            {
                e.Effect 
=  DragDropEffects.None;
            }
        }

        
private   void  treeView2_DragDrop( object  sender, DragEventArgs e)
        {
            
// 获得拖放中的节点
            TreeNode moveNode  =  (TreeNode)e.Data.GetData( " System.Windows.Forms.TreeNode " );
            
// 根据鼠标坐标确定要移动到的目标节点
            Point pt;
            TreeNode targeNode;
            pt 
=  ((TreeView)(sender)).PointToClient( new  Point(e.X, e.Y));
            targeNode 
=   this .treeView2.GetNodeAt(pt);
            
// 如果目标节点无子节点则添加为同级节点,反之添加到下级节点的未端
            TreeNode NewMoveNode  =  (TreeNode)moveNode.Clone();
            
// if (targeNode.Nodes.Count == 0)
            
// {
            
//     targeNode.Nodes.Insert(targeNode.Index, NewMoveNode);
            
// }
            
// else
            
// {
            targeNode.Nodes.Insert(targeNode.Nodes.Count, NewMoveNode);
            
// }
            
// 更新当前拖动的节点选择
            
// treeView2.SelectedNode = NewMoveNode;
            
// 展开目标节点,便于显示拖放效果
            targeNode.Expand();

            
// 移除拖放的节点
            moveNode.Remove();
        }

转载于:https://www.cnblogs.com/superlee/archive/2009/08/25/1553923.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值