Я пытаюсь реализовать DragDrop элемента treeview внутри того же элемента управления.C# WinForms - DragDrop в том же TreeViewControl
Я хочу, чтобы иметь возможность перемещать элемент из одного узла в другой.
Вот мой текущий код. Когда я запустил это, я вижу, что элемент начал перетаскивание, но значок Windows не позволяет его удалять в любые узлы в элементе управления.
Мой текущий код
private void treeView1_ItemDrag(object sender, ItemDragEventArgs e)
{
DoDragDrop(e.Item, DragDropEffects.Move);
}
private void treeView1_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
private void treeView1_DragDrop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(typeof(TreeNode)))
{
TreeNode sourceNode = e.Data.GetData(typeof(TreeView)) as TreeNode;
var item = new TreeNode(sourceNode.Text);
System.Drawing.Point pt = ((TreeView)sender).PointToClient(new System.Drawing.Point(e.X, e.Y));
TreeNode DestinationNode = ((TreeView)sender).GetNodeAt(pt);
DestinationNode.Nodes.Add(item);
DestinationNode.Expand();
}
}
большое спасибо, да это работает :) – IEnumerable
я знаю @. Франческо Б. решал эту проблему, но думал, что добавлю, добавив следующую строку вверху функции «TreeView treeView1 = (TreeView) отправитель», она станет немного более многоразовой. – James
Обратите внимание: если вы создали свой собственный класс TreeNode, вы должны использовать это имя типа при вызове e.Data.GetData или draggedNode станет нулевым. –