实现方法,在datagridview的mousedown事件中开始 托放。
然后在treeview 的 DragEnter 中接收托放。
最后在treeview的 DragDrop 中处理托放结果。
注:treeview的allowdrop属性要设置为 true。

1private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
  2        {
  3            if (e.Button == MouseButtons.Right)
  4            {
  5                DataGridView.HitTestInfo info = dataGridView1.HitTest(e.X, e.Y);
  6                
  7                if (info.RowIndex >= 0)
  8                {
  9                    DataGridViewRow dr = (DataGridViewRow)
 10                           dataGridView1.Rows[info.RowIndex];
 11                    if (dr != null)
 12                        dataGridView1.DoDragDrop(dr, DragDropEffects.Copy);
 13                }
 14            }
 15        }
 16
 17        private void treeView1_DragEnter(object sender, DragEventArgs e)
 18        {
 19            e.Effect = DragDropEffects.Copy;
 20        }
 21
 22        private void treeView1_DragDrop(object sender, DragEventArgs e)
 23        {
 24            if (e.Data.GetDataPresent(typeof(DataGridViewRow)))
 25            {                
 26                Point p = treeView1.PointToClient(new Point(e.X, e.Y));
 27                TreeViewHitTestInfo index = treeView1.HitTest(p);
 28
 29                if (index.Node != null)
 30                {
 31
 32                    DataGridViewRow drv = (DataGridViewRow)e.Data.GetData(typeof(DataGridViewRow));
 33                    index.Node.Text = "Drop: " + drv.Cells[0].ToString();
 34             
 35                }
 36            }
 37        }