В настоящее время вы работаете в автономном режиме; ожидается повторное подключение к Интернету

Как добавить функциональность и перетащите TreeView в приложении C#

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

Эта статья на английском языке: 307968
Для версии Microsoft Visual Basic .NET в данной статье см. 307967.
Версию данной статьи Microsoft Visual C++ .NET см. 815675.
Аннотация
В этом пошаговом руководстве описывается, как реализовать операцию перетаскивания узлов между двумя элементами управления TreeView в приложении C#.

Требования

В следующем списке представлены рекомендованные оборудование, программное обеспечение, сетевая инфраструктура и пакеты обновления, которые необходимы:
  • Visual C#
Предполагается, что вы знакомы со следующими разделами:
  • Элемент управления Windows Forms TreeView
  • Обработка событий в Windows Forms

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

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

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

  1. Создайте новое приложение Windows в Visual C#. По умолчанию создается форма с именем Form1.
  2. С помощью панели элементов добавьте в форму Form1 два элемента управления TreeView . По умолчанию создаются TreeView1 и TreeView2 .
  3. Чтобы разрешить элементы управления TreeView , перетаскивание, измените свойство Свойства AllowDropTreeView1 и TreeView2 значение True в окне Свойства.
  4. Дважды щелкните Form1 , чтобы создать метод обработчика для события загрузки на Form1. Добавьте следующий код для заполнения два элемента управления TreeView с узлов дерева объектов и определять обработчики событий:
    private void Form1_Load(object sender, System.EventArgs e)		{			TreeNode ParentNode1;			TreeNode ParentNode2;			ParentNode1 = treeView1.Nodes.Add("tv1");			ParentNode1.Nodes.Add("tv1FirstChild");			ParentNode1.Nodes.Add("tv1SecondChild");			ParentNode1.Nodes.Add("tv1ThirdChild");			ParentNode1.Nodes.Add("tv1FourthChild");			ParentNode1.Expand();			ParentNode2 = treeView2.Nodes.Add("tv2");			ParentNode2.Nodes.Add("tv2FirstChild");			ParentNode2.Nodes.Add("tv2SecondChild");			ParentNode2.Expand();			this.treeView1.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.treeView_ItemDrag);			this.treeView2.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.treeView_ItemDrag);			this.treeView1.DragEnter += new System.Windows.Forms.DragEventHandler(this.treeView_DragEnter);			this.treeView2.DragEnter += new System.Windows.Forms.DragEventHandler(this.treeView_DragEnter);			this.treeView1.DragDrop += new System.Windows.Forms.DragEventHandler(this.treeView_DragDrop);			this.treeView2.DragDrop += new System.Windows.Forms.DragEventHandler(this.treeView_DragDrop);			}
  5. Добавьте следующий обработчик метода для обработки события ItemDragTreeView1 или TreeView2в зависимости от направления операции перетаскивания. Этот код запускает операцию перемещения на перетаскиваемый элемент.
    private void treeView_ItemDrag(object sender,			System.Windows.Forms.ItemDragEventArgs e)		{			DoDragDrop(e.Item, DragDropEffects.Move);		}
  6. Добавьте следующий обработчик метода для обработки события DragEnterTreeView1 или TreeView2в зависимости от направления операции перетаскивания.
    private void treeView_DragEnter(object sender,			System.Windows.Forms.DragEventArgs e)		{			e.Effect = DragDropEffects.Move;		}
  7. Таким образом, что немедленно метод, добавленный на предыдущем шаге, добавьте следующий метод в класс Form1:
    private void treeView_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)		{			TreeNode NewNode;			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);				NewNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode");				if(DestinationNode.TreeView != NewNode.TreeView)				{     					DestinationNode.Nodes.Add((TreeNode) NewNode.Clone());					DestinationNode.Expand();					//Remove Original Node					NewNode.Remove();				}			}		}
  8. Постройте и запустите проект. Перетащите узлы из одного элемента управления TreeView в другой. Обратите внимание, что узел удаляется из системы управления версиями и добавляется в качестве дочернего узла в конечный элемент управления.

Заметки

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

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

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

Свойства

Номер статьи: 307968 — последний просмотр: 06/12/2016 05:48:00 — редакция: 5.0

Microsoft Visual C# 2008 Express Edition, Microsoft Visual C# 2005, Microsoft Visual C# .NET 2002 Standard Edition

  • kbsweptvs2008 kbhowtomaster kbsample kbmt KB307968 KbMtru
Отзывы и предложения