• Добро пожаловать на сайт - Forumteam.digital !

    Что бы просматривать темы форума необходимо зарегестрироваться или войти в свой аккаунт.

    Группа в телеграме (подпишитесь, что бы не потерять нас) - ForumTeam Chat [Подписатся]
    Связь с администратором - @ftmadmin

42. TreeView, или просто "элемент дерево".

Redman

<FORUMTEAM>
Команда форума
Регистрация
13.11.17
Сообщения
13.340
Реакции
8.377
Баллы
1.200
FTC
208¢
Элемент управления Дерево.
Элемент управления TreeView (дерево) Вам уже известен из курса MFC. Теперь мы рассмотрим использование данного элемента управления в курсе C#. С ним связаны 3 основные класса: TreeView, TreeNode и TreeNodeCollection.

Объект класса TreeNode - это одна запись дерева. Данный объект связывают со строкой, иногда - с определенным изображением. Он имеет следующие конструкторы:
Код:
public TreeNode();
public TreeNode(string text);
public TreeNode(string text,   TreeNode[] children);
public TreeNode(string text,   int imageIndex,   int selectedImageIndex);
public TreeNode(string text,   int imageIndex,   int selectedImageIndex,   TreeNode[] children);

В качестве параметров конструктор принимает: text - строку, связанную с узлом (описание узла); imageIndex - индекс изображения по умолчанию для узла; selectedImageIndex - индекс изображения для выделенного узла; children - массив дочерних объектов TreeNode (подузлов).

В классе TreeNode есть свойство Nodes, которое по сути является набором других объектов TreeNode.Свойство Nodes возвращает коллекцию узлов дерева, связанных с элементом управления TreeView.
Код:
public TreeNodeCollection Nodes {get;}

Класс TreeNodeCollection реализует следующие интерфейсы: IList, ICollection и IEnumerable. Данный класс представляет коллекцию объектов TreeNode. Он также позволяет нам индексировать набор так же, как и массив при помощи следующих свойств:
Код:
public int Count {get;}
public virtual TreeNode this [int index] {get; set;}

Чтобы добавить подузел к существующему узлу, необходимо использовать метод Add класса TreeNodeCollection. Существует 2 варианта данной функции. Первый принимает в качестве параметра описание узла, второй - объект класса TreeNode, который нужно добавить в коллекцию.
Код:
public virtual TreeNode Add(string text);
public virtual int Add(TreeNode node);

Для удаления подузла используется метод Remove. В данной функции только один параметр - объект класса TreeNode, который необходимо удалить.
Код:
public void Remove(TreeNode node);

Класс TreeView - это набор объектов класса TreeNode верхнего уровня. У класса TreeView также есть свойство Nodes.
Код:
public TreeNodeCollection Nodes {get;}

При использовании элемента управления TreeView часто используются изображения слева от текста каждого узла. Данные изображения хранятся в объекте ImageList, относящемся ко всему TreeView. Вот некоторые из свойств TreeView, связанные с ImageList:
Код:
public ImageList ImageList {get; set;}
public int ImageIndex {get; set;} //определяет рисунок по умолчанию
public int SelectedImageIndex {get; set;}//определяет рисунок для выбранного узла.

Изображение можно задавать не только для узлов верхнего уровня, но и для любого объекта TreeNode при помощи похожих свойств.
Код:
public int ImageIndex {get; set;} //определяет рисунок по умолчанию
public int SelectedImageIndex {get; set;}//определяет рисунок для выбранного узла.

Однака у TreeNode нет собственного свойства ImageList. Индексы относятся к свойству ImageList элемента управления, которому принадлежит объект TreeNode. Кроме того есть возможность указать индексы изображений при создании объекта TreeNode.

События дерева.
Приведенные ниже события происходят, когда раскрывается, сворачивается или активизируется узел. Если событие в своем названии содержит слово Before, то это событие срабатывает еще до того, как выполнится операция.
Код:
public event TreeViewCancelEventHandler BeforeCollapse;
public event TreeViewCancelEventHandler BeforeExpand;
public event TreeViewCancelEventHandler BeforeSelect;
public event TreeViewEventHandler AfterCollapse;
public event TreeViewEventHandler AfterExpand;
public event TreeViewEventHandler AfterSelect;
 
Сверху Снизу