Как добавить функциональность TreeView и перетаскивания в приложении Visual Basic .NET или Visual Basic 2005

ВНИМАНИЕ! Данная статья переведена с использованием программного обеспечения Майкрософт для машинного перевода и, возможно, отредактирована посредством технологии Community Translation Framework (CTF). Корпорация Майкрософт предлагает вам статьи, обработанные средствами машинного перевода, отредактированные членами сообщества Майкрософт и переведенные профессиональными переводчиками, чтобы вы могли ознакомиться со всеми статьями нашей базы знаний на нескольких языках. Статьи, переведенные с использованием средств машинного перевода и отредактированные сообществом, могут содержать смысловое, синтаксические и (или) грамматические ошибки. Корпорация Майкрософт не несет ответственности за любые неточности, ошибки или ущерб, вызванные неправильным переводом контента или его использованием нашими клиентами. Подробнее об CTF можно узнать по адресу http://support.microsoft.com/gp/machine-translation-corrections/ru.

Эта статья на английском языке: 307967
Microsoft Visual C# .NET версии данной статьи см. 307968.
Для версии Microsoft Visual Basic 6.0 в данной статье см. 177743.

В ЭТОЙ ЗАДАЧЕ

Аннотация
В этой статье показано, как выполнить операцию перетаскивания узлов дерева, между двумя элементами управления TreeView в приложении Visual Basic .NET или Visual Basic 2005.

back to the top

Требования

В следующем списке представлены рекомендованные оборудование, программное обеспечение, сетевая инфраструктура и пакеты обновления, которые необходимы:
  • Visual Basic .NET или Visual Basic 2005
Предполагается, что вы знакомы со следующими разделами:
  • Элемент управления Windows Forms TreeView
  • Обработка событий в Windows Forms
back to the top

Описание приема

Элемент управления TreeView предоставляет три и перетащите событий, которые необходимо обрабатывать:
  • ItemDrag: это событие вызывается из источника элемента управления TreeView , как только пользователь начинает перетаскивать узел дерева. Whenthis происходит, вызовите метод DoDragDrop для инициализации процедуры перетаскивания мышью.
  • DragEnter: После инициирования операции перетаскивания-необходимо handlethe событие DragEnter в целевой элемент управления TreeView . Это событие происходит, когда пользователь перетаскивает объект TreeNode из источника элемента управления TreeView для точки в границах конечного элемента управления TreeView . Событие DragEnter позволяет целевой элемент управления TreeView , чтобы указать, допустимо ли операция перетаскивания для thiscontrol. Пример кода в этой статье позволяет только moveoperation.
  • DragDrop: является последним событием для обработки события DragDrop для конечного элемента управления TreeView . Это событие происходит, когда объект TreeNode , который перетаскивается перетащили на конечный элемент управления TreeView . Чтобы обработать это событие, извлечь объект TreeNode и добавление объекта в конечный элемент управления TreeView . В примере кода используется объект данных для извлечения данных.
Пример кода в этой статье гарантирует, что назначение элемента управления TreeView перетаскиваемый объект TreeNode . Метод GetData объекта данных извлекает узел, который перетаскивается из системы управления версиями. Метод GetNodeAt определяет, где этот узел удаляется в конечный элемент управления. После определения положения, добавьте исходный узел как дочерний узел назначения. Так как в этом примере выполняет операции перемещения, последним шагом является удаление исходного узла из исходного элемента управления TreeView .

back to the top

Шаги для создания примера

  1. Создание нового приложения Windows в Visual Basic .NET или Visual Basic в 2005.Form1 создается по умолчанию.
  2. С помощью панели элементов добавьте в форму Form1 два элемента управления TreeView . По умолчанию создаются TreeView1 и TreeView2 .
  3. Чтобы разрешить элементы управления TreeView , перетаскивание, измените свойство Свойства AllowDropTreeView1 и TreeView2 значение True в окне Свойства.
  4. Дважды щелкните Form1 , чтобы создать метод обработчика для события загрузки формы Form1. Добавьте следующий код, чтобы заполнить два элемента управления TreeView с объектами TreeNode :
    Private Sub Form1_Load(ByVal sender As System.Object, _                        ByVal e As System.EventArgs) Handles MyBase.Load    Dim ParentNode1 As TreeNode    Dim ParentNode2 As TreeNode    ParentNode1 = TreeView1.Nodes.Add("tv1")    With ParentNode1        .Nodes.Add("tv1FirstChild")        .Nodes.Add("tv1SecondChild")        .Nodes.Add("tv1ThirdChild")        .Nodes.Add("tv1FourthChild")        .Expand()    End With    ParentNode2 = TreeView2.Nodes.Add("tv2")    With ParentNode2        .Nodes.Add("tv2FirstChild")        .Nodes.Add("tv2SecondChild")        .Expand()    End WithEnd Sub					
  5. Добавьте следующий обработчик метода для обработки события ItemDragTreeView1 или TreeView2в зависимости от направления операции перетаскивания. Это codeinitiates операции перемещения на перетаскиваемый элемент.
        Public Sub TreeView_ItemDrag(ByVal sender As Object, _                                  ByVal e As ItemDragEventArgs) _                                  Handles TreeView1.ItemDrag, TreeView2.ItemDrag        DoDragDrop(e.Item, DragDropEffects.Move)    End Sub					
  6. Добавьте следующий обработчик метода для обработки события DragEnterTreeView1 или TreeView2в зависимости от направления операции перетаскивания.
        Public Sub TreeView_DragEnter(ByVal sender As Object, _                               ByVal e As DragEventArgs) _                               Handles TreeView2.DragEnter, TreeView1.DragEnter        e.Effect = DragDropEffects.Move    End Sub					
  7. Таким образом, чтобы itimmediately следующий метод, добавленный на предыдущем шаге, добавьте следующий метод в класс Form1:
    Public Sub TreeView_DragDrop(ByVal sender As Object, _                              ByVal e As DragEventArgs) _                              Handles TreeView2.DragDrop, TreeView1.DragDrop        Dim NewNode As TreeNode        If e.Data.GetDataPresent("System.Windows.Forms.TreeNode", False) Then            Dim pt As Point            Dim DestinationNode As TreeNode            pt = CType(sender, TreeView).PointToClient(New Point(e.X, e.Y))            DestinationNode = CType(sender, TreeView).GetNodeAt(pt)            NewNode = CType(e.Data.GetData("System.Windows.Forms.TreeNode"), _                                            TreeNode)            If Not DestinationNode.TreeView Is NewNode.TreeView Then                DestinationNode.Nodes.Add(NewNode.Clone)                DestinationNode.Expand()                'Remove original node                NewNode.Remove()            End If        End IfEnd Sub					
  8. Постройте и запустите проект. Перетащите узлы из одного элемента управления TreeView в другой. Обратите внимание, что узел удаляется из элемента управления thesource и добавляется в качестве дочернего узла в destinationcontrol.
back to the top

Заметки

Примеры, предоставленные в данной статье предназначен исключительно для демонстрации; Таким образом только в образце показано использование элемента управления TreeView в упрощенный случай. Чтобы сохранить образец небольшой, несколько сценариев не учитывается. Например код не позволяет выполнить операцию и перетащите с узлами в одном элементе управления TreeView .

Код также не обрабатывает сценарий, в котором пользователь не удалить объект на конкретном узле в целевой элемент управления TreeView . Для обработки этой ситуации, проверьте, если DestinationNode имеет значение null; Если это так, можно добавить объект, перетаскиваемый элемент управления TreeView в корневой каталог и т.д.

back to the top
Ссылки
Дополнительные сведения можно найти в следующих разделах документации платформа.NET Framework Software Development Kit (SDK):

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 307967 — последний просмотр: 07/25/2015 15:04:00 — редакция: 5.0

Microsoft Visual Basic .NET 2002 Standard Edition, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic 2005

  • kbvs2005applies kbvs2005swept kbhowtomaster kbmt KB307967 KbMtru
Отзывы и предложения