http://blog.csdn.net/mzoy/archive/2007/08/27/1760312.aspx

解决方案 »

  1.   

    1.MouseDown事件获得节点1;(要删除的节点)
    2.MouseUp事件获得节点2;(回收站)如果节点2的显示文本等于回收站,删除节点1;细节问题自己考虑考虑,由于时间有限,只能指导到这里了;
    你也可以用拖放事件
      

  2.   

    帮你一个好的参考资料了,可以自己去下载源程序好好研究一下,下面是地址:
    http://www.codeproject.com/KB/tree/TreeViewDragDrop.aspx
      

  3.   

    下面是一个比较简单的实现代码,比codeproject上实现的功能简单一些,不知道是否满足你的需要?
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        private void treeView1_DragDrop(object sender, DragEventArgs e)
            {
                if (e.Data.GetDataPresent("System.Windows.Forms.TreeNode", false))
                {
                    //获取当前鼠标位置所在的树节点,即目标节点
                    Point pt = ((TreeView)sender).PointToClient(new Point(e.X, e.Y));
                    TreeNode toNode = ((TreeView)sender).GetNodeAt(pt);                //获取被拖动的节点
                    TreeNode fromNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode");             
                    
                    //完成拖动节点的移动
                    fromNode.Remove();
                    toNode.Nodes.Add(fromNode);
                    toNode.Expand();
                }
            }        private void treeView1_DragEnter(object sender, DragEventArgs e)
            {
                e.Effect = DragDropEffects.Move;
            }        private void treeView1_ItemDrag(object sender, ItemDragEventArgs e)
            {
                //按下鼠标左键,启动拖放
                if (e.Button == MouseButtons.Left)
                    DoDragDrop(e.Item, DragDropEffects.Move);
            }        private void treeView1_DragOver(object sender, DragEventArgs e)
            {
                //设置鼠标经过的树节点为当前节点
                Point targetPoint = ((TreeView)(sender)).PointToClient(new Point(e.X, e.Y));
                ((TreeView)(sender)).SelectedNode = ((TreeView)(sender)).GetNodeAt(targetPoint);
            }    }
    }