Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
32
Добавлен:
15.01.2021
Размер:
289.09 Кб
Скачать

4.2. Програмне створення дерева і робота з ним

Дерево можна створити у коді з використанням об’єктів класу TreeNode. Це закритий клас класу TreeView.

Приклад 7. Програмне створення дерева, яке відображає структуру МНТУ і реалізація методів обходу вузлів дерева, додавання і видалення вузлів.

Готова форма при виконанні.

  1. Спочатку потрібно створити форму і розмістити на ній елемент TreeView.

  1. Написати метод формування дерева. Метод викликати з конструктора чи з методу Load.

С цьому методі створюються об’єкти вузлів, додаються до своїх вузлів-предків. У об'єктів вузлів призначаються лише властивості Name і Text.

private void CreateTree()

{

//Створення дерева - структура МНТУ

TreeNode rootNode = new TreeNode() { Name = "ISTU", Text = "МНТУ" };

//додаємо корінь дерева в TreeView

treeView1.Nodes.Add(rootNode);

//додавання вузлів

TreeNode node = new TreeNode() { Name = "Depart", Text = "Департаменти" };

treeView1.Nodes[0].Nodes.Add(node);

TreeNode node1 = new TreeNode() { Name = "Facult", Text = "Факультети" };

TreeNode node11 = new TreeNode { Name = "CompScience", Text = "Комп'ютерних наук" };

TreeNode node12 = new TreeNode { Name = "Econom", Text = "Економіки" };

node1.Nodes.Add(node11);

node1.Nodes.Add(node12);

TreeNode node111 = new TreeNode { Name = "KafM", Text = "Кафедра математики" };

TreeNode node112 = new TreeNode { Name = "KafCS", Text = "Кафедра комп.наук" };

node11.Nodes.Add(node111);

node11.Nodes.Add(node112);

TreeNode nodeGroup = new TreeNode { Name = "Group", Text = "Групи" };

node112.Nodes.Add(nodeGroup);

TreeNode nodeK71 = new TreeNode { Name = "К71", Text = "К-71" };

TreeNode nodePI71 = new TreeNode { Name = "PI71", Text = "ПІ-71" };

nodeGroup.Nodes.Add(nodeK71);

nodeGroup.Nodes.Add(nodePI71);

treeView1.Nodes[0].Nodes.Add(node1);

rootNode.ExpandAll();

}

Виклик методу вставимо в метод Load.

private void Form1_Load(object sender, EventArgs e)

{

CreateTree();

}

  1. Обхід дерева.

Рекурсивний алгоритм обходу дерева

метод PrintRecursive(TreeNode treeNode)

полягає у проході по кожному вузлу і виведенні його назви (за допомогою методу MessageBox.Show(treeNode.Text); )

Для перебору вузлів створюється колекція вузлів

TreeNodeCollection nodes = treeView1.Nodes;

Це потрібно для того, щоб можна було перебирати вузли з циклі foreach:

Метод private void btnTraverse_Click(object sender, EventArgs e)

Викликається при натисканні кнопки Обхід дерева.

private void btnTraverse_Click(object sender, EventArgs e)

{

//Обхід вузлів дерева і виведення його вузлів

TreeNodeCollection nodes = treeView1.Nodes;

foreach (TreeNode n in nodes)

{

PrintRecursive(n);

}

}

private void PrintRecursive(TreeNode treeNode)

{

// рекурсивний метод виведення кожного вузла.

MessageBox.Show(treeNode.Text);

foreach (TreeNode tn in treeNode.Nodes)

{

PrintRecursive(tn);

}

}