Вот код этой ссылки перетаскивание узлов в виде дерева
его можно использовать для перетаскивания узлов из дерева в другое, но любой может настроить его так, чтобы он
в том же дереве
Создайте новое приложение Windows в Visual C #. По умолчанию создается форма с именем Form1.
Используйте панель инструментов, чтобы добавить два элемента управления TreeView в форму Form1. По умолчанию TreeView1 и TreeView2 созданы.
Чтобы разрешить перетаскивание элементов управления TreeView, измените свойство AllowDrop для TreeView1 и TreeView2 на True в окне свойств.
Дважды щелкните Form1, чтобы сгенерировать обработчик метода для события Load Form1. Добавьте следующий код, чтобы заполнить два элемента управления TreeView объектами TreeNode и определить обработчики событий:
Добавьте следующий обработчик метода для обработки события ItemDrag TreeView1 или TreeView2 в зависимости от направления операции перетаскивания. Этот код инициирует операцию перемещения для перетаскиваемого элемента.
private void treeView_ItemDrag (отправитель объекта,
Добавьте следующий обработчик метода для обработки события DragEnter TreeView1 или TreeView2 в зависимости от направления операции перетаскивания:
private void treeView_DragEnter (отправитель объекта,
Добавьте следующий метод в класс Form1, чтобы он сразу следовал методу, который вы добавили на предыдущем шаге
private void form1_Load(object sender, EventArgs e)
{
this.treeView.ItemDrag += new ItemDragEventHandler(this.treeView_ItemDrag);
this.treeView.DragDrop += new DragEventHandler(this.treeView_DragDrop);
this.treeView.DragEnter += new DragEventHandler(this.treeView_DragEnter);
}
private void treeView_ItemDrag(object sender, ItemDragEventArgs e)
{
DoDragDrop(e.Item, DragDropEffects.Move);
_selectedNode = (TreeNode)e.Item;
}
private void treeView_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
private void treeView_DragDrop(object sender, DragEventArgs e)
{
TreeNode sourceNode = _selectedNode;
if (sourceNode != null)
{
if (e.Data.GetDataPresent("System.Windows.Forms.TreeNode", false))
{
Point pt = ((TreeView)sender).PointToClient(new Point(e.X, e.Y));
TreeNode destinationNode = ((TreeView)sender).GetNodeAt(pt);
if (destinationNode != null)
{
//ur target
}
}
}
}