Разрешить пользователю перемещать узлы в древовидной структуре вверх и вниз с помощью перетаскивания мышью.C # - PullRequest
0 голосов
/ 21 марта 2019

Интересно, в древовидной структуре есть какое-либо свойство, которое позволяет пользователю перемещать узлы вверх и вниз с помощью перетаскивания мышью во время выполнения (например, замена двух узлов без необходимости добавления дополнительных кнопок)

1 Ответ

0 голосов
/ 21 марта 2019

Вот код этой ссылки перетаскивание узлов в виде дерева
его можно использовать для перетаскивания узлов из дерева в другое, но любой может настроить его так, чтобы он в том же дереве

Создайте новое приложение 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
                }
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...