给你段源代码
==================Hope it would help you===========using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;namespace TreeDnD
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.TreeView treeView1;
private System.Windows.Forms.TreeView treeView2;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null; public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent(); //
// TODO: Add any constructor code after InitializeComponent call
//
} /// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null) 
{
components.Dispose();
}
}
base.Dispose( disposing );
} #region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.treeView1 = new System.Windows.Forms.TreeView();
this.treeView2 = new System.Windows.Forms.TreeView();
this.SuspendLayout();
// 
// treeView1
// 
this.treeView1.AllowDrop = true;
this.treeView1.ImageIndex = -1;
this.treeView1.Location = new System.Drawing.Point(0, 8);
this.treeView1.Name = "treeView1";
this.treeView1.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
  new System.Windows.Forms.TreeNode("1Node3", new System.Windows.Forms.TreeNode[] {
  new System.Windows.Forms.TreeNode("Node15", new System.Windows.Forms.TreeNode[] {
  new System.Windows.Forms.TreeNode("Node16")})}),
  new System.Windows.Forms.TreeNode("1Node4", new System.Windows.Forms.TreeNode[] {
  new System.Windows.Forms.TreeNode("1Node13", new System.Windows.Forms.TreeNode[] {
   new System.Windows.Forms.TreeNode("1Node14")})}),
  new System.Windows.Forms.TreeNode("1Node5", new System.Windows.Forms.TreeNode[] {
  new System.Windows.Forms.TreeNode("1Node11")}),
  new System.Windows.Forms.TreeNode("1Node6", new System.Windows.Forms.TreeNode[] {
  new System.Windows.Forms.TreeNode("1Node10")}),
  new System.Windows.Forms.TreeNode("1Node7", new System.Windows.Forms.TreeNode[] {
  new System.Windows.Forms.TreeNode("1Node8", new System.Windows.Forms.TreeNode[] {
  new System.Windows.Forms.TreeNode("1Node9")})}),
  new System.Windows.Forms.TreeNode("1Node12")});
this.treeView1.SelectedImageIndex = -1;
this.treeView1.Size = new System.Drawing.Size(121, 256);
this.treeView1.TabIndex = 0; this.treeView1.DragEnter += new System.Windows.Forms.DragEventHandler(this.treeView1_DragEnter);
this.treeView1.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.treeView1_ItemDrag);
this.treeView1.DragDrop += new System.Windows.Forms.DragEventHandler(this.treeView1_DragDrop);

// 
// treeView2
// 
this.treeView2.AllowDrop = true;
this.treeView2.ImageIndex = -1;
this.treeView2.Location = new System.Drawing.Point(240, 24);
this.treeView2.Name = "treeView2";
this.treeView2.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
  new System.Windows.Forms.TreeNode("2Node0", new System.Windows.Forms.TreeNode[] {
  new System.Windows.Forms.TreeNode("2Node3")}),
  new System.Windows.Forms.TreeNode("2Node1", new System.Windows.Forms.TreeNode[] {
  new System.Windows.Forms.TreeNode("2Node4", new System.Windows.Forms.TreeNode[] {
  new System.Windows.Forms.TreeNode("2Node5")})}),
  new System.Windows.Forms.TreeNode("2Node2")});
this.treeView2.SelectedImageIndex = -1;
this.treeView2.Size = new System.Drawing.Size(248, 224);
this.treeView2.TabIndex = 1;
this.treeView2.DragEnter += new System.Windows.Forms.DragEventHandler(this.treeView2_DragEnter);
this.treeView2.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.treeView2_ItemDrag);
this.treeView2.DragDrop += new System.Windows.Forms.DragEventHandler(this.treeView2_DragDrop);
// 
// Form1
// 
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(608, 285);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
  this.treeView2,
  this.treeView1});
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false); }
#endregion /// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main() 
{
Application.Run(new Form1());
} private void treeView2_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
TreeNode newNode;
if( e.Data.GetDataPresent("System.Windows.Forms.TreeNode", false))
{
Point pt;
TreeNode destinationNode;
pt = treeView2.PointToClient(new Point(e.X, e.Y));
destinationNode = treeView1.GetNodeAt(pt);
newNode = (TreeNode) e.Data.GetData("System.Windows.Forms.TreeNode");
if(!destinationNode.Equals(newNode))
{
//destinationNode.Nodes.Add(newNode.Clone());
destinationNode.Nodes.Add((TreeNode) newNode.Clone());
destinationNode.Expand();
//Remove original node
newNode.Remove();
}
}
} private void treeView2_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
 e.Effect = DragDropEffects.Move;
} private void treeView2_ItemDrag(object sender, System.Windows.Forms.ItemDragEventArgs e)
{

DoDragDrop(e.Item, DragDropEffects.Move);
} private void treeView1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
TreeNode newNode;
if( e.Data.GetDataPresent("System.Windows.Forms.TreeNode", false))
{
Point pt;
TreeNode destinationNode;
pt = treeView1.PointToClient(new Point(e.X, e.Y));
destinationNode = treeView1.GetNodeAt(pt);
newNode = (TreeNode) e.Data.GetData("System.Windows.Forms.TreeNode");
if(!destinationNode.Equals(newNode))
{
//destinationNode.Nodes.Add(newNode.Clone());
destinationNode.Nodes.Add((TreeNode) newNode.Clone());
destinationNode.Expand();
//Remove original node
newNode.Remove();
}
}
} private void treeView1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
 e.Effect = DragDropEffects.Move;
} private void treeView1_ItemDrag(object sender, System.Windows.Forms.ItemDragEventArgs e)
{
DoDragDrop(e.Item, DragDropEffects.Move);
}
}
}