Статья C# Как создать и добавить узел в TreeView

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

Создание узлов
Каждый узел в элементе TreeView представляет собой объект класса TreeNode.
C#:
//создание узла
TreeNode node = new TreeNode();
С помощью свойств: Name и Text можно задать имя и лейбл (текст, который будет отображаться в элементе TreeView) для созданного узла.
C#:
TreeNode node = new TreeNode();
node.Name = "friends";
node.Text = "друзья";
//либо
TreeNode node = new TreeNode() { Name = "friends", Text = "друзья" };
Создание и добавление корневых узлов
Элемент управления TreeView используется для вывода данных в виде дерева. Самый первый узел дерева, к которому затем крепятся все остальные узлы, называется корневым. В одном элементе TreeView может быть несколько корневых узлов.
C#:
//создание корневого узла
TreeNode rootNode = new TreeNode();
rootNode.Name = "auto";
rootNode.Text = "автомобили";
Чтобы добавить созданный корневой узел в элемент TreeView его нужно поместить в коллекцию типа TreeNodeCollection, доступ к которой можно получить с помощью свойства Nodes.

Для добавления новых элементов в коллекцию используются методы Add и AddRange.
C#:
TreeNode rootNode = new TreeNode();
rootNode.Name = "auto";
rootNode.Text = "автомобили";
//добавляем корневой узел в TreeView
treeView1.Nodes.Add(rootNode);
27928


Метод Add позволяет не только добавлять новые узлы, но и создавать их. Например, корневой узел auto можно создать и добавить следующим образом:
C#:
treeView1.Nodes.Add("auto", "автомобили");
Создание и добавление дочерних узлов

Любой узел, добавленный к уже существующему узлу дерева, называется дочерним.

Давайте рассмотрим, как создать дочерний узел marka и добавить его к корневому узлу car.
C#:
TreeNode rootNode = new TreeNode();
rootNode.Name = "auto";
rootNode.Text = "автомобили";
treeView1.Nodes.Add(rootNode);
//создаём дочерний узел
TreeNode markaNode = new TreeNode();
markaNode.Name = "marka";
markaNode.Text = "марки";
//добавляем дочерний узел к корневому узлу
rootNode.Nodes.Add(markaNode);
Либо можно создать и добавить этот дочерний узел другим путем:
C#:
TreeNode rootNode = new TreeNode();
rootNode.Name = "auto";
rootNode.Text = "автомобили";
treeView1.Nodes.Add(rootNode);
rootNode.Nodes.Add("marka", "марки");
Коллекция Nodes

Далее рассмотрим, как работать с коллекцией Nodes элемента управления TreeView.

В первом примере создадим и добавим всё тот же дочерний узел marka к корневому узлу car.
C#:
TreeNode rootNode = new TreeNode();
rootNode.Name = "auto";
rootNode.Text = "автомобили";
treeView1.Nodes.Add(rootNode);
//получаем первый элемент коллекции (корневой узел)
TreeNode autoNode = treeView1.Nodes[0];
//либо
//TreeNode autoNode = treeView1.Nodes["auto"];
//создаём и добавляем дочерний узел
autoNode.Nodes.Add("marka", "марки");
В квадратных скобках указывается либо индекс элемента, либо его имя.

Каждый узел в элементе TreeView хранит все дочерние узлы внутри всё той же коллекции типа TreeNodeCollection, доступ к которой также осуществляется с помощью свойства Nodes.

Выше приведённый код можно сократить:
C#:
/первый вариант
treeView1.Nodes.Add("auto", "автомобили");
treeView1.Nodes[0].Nodes.Add("marka", "марки");
//второй вариант
treeView1.Nodes.Add("auto", "автомобили").Nodes.Add("marka", "марки");
27535


В следующем примере создадим два дочерних узла и добавим их к узлу marka.
C#:
treeView1.Nodes[0].Nodes[0].Nodes.Add("bmw", "BMW");
treeView1.Nodes["auto"].Nodes["marka"].Nodes.Add("toyota", "Toyota");
27536


К каждой марки автомобиля добавим по одной модели.

C#:
//auto\marka\bmw
treeView1.Nodes[0].Nodes[0].Nodes[0].Nodes.Add("name", "x5");
//auto\marka\toyota
treeView1.Nodes[0].Nodes[0].Nodes[1].Nodes.Add("name", "Camry");
27537


Добавим ещё несколько моделей для каждой марки авто.

C#:
//auto\marka\bmw
treeView1.Nodes[0].Nodes[0].Nodes[0].Nodes.Add("name", "x3");
treeView1.Nodes[0].Nodes[0].Nodes[0].Nodes.Add("name", "x6");
27538

C#:
treeView1.Nodes["auto"].Nodes["marka"].Nodes["toyota"].Nodes.Add("name", "Corona");
treeView1.Nodes["auto"].Nodes["marka"].Nodes["toyota"].Nodes.Add("name", "Corolla");
27539


Получается довольно длинная запись, которую можно сократить, например следующим образом:
C#:
TreeNode bmwNode = treeView1.Nodes[0].Nodes[0].Nodes[0];
bmwNode.Nodes.Add("name", "x3");
bmwNode.Nodes.Add("name", "x6");
TreeNode toyotaNode = treeView1.Nodes["auto"].Nodes["marka"].Nodes["toyota"];
toyotaNode.Nodes.Add("name", "Corona");
toyotaNode.Nodes.Add("name", "Corolla");
К узлу x5 добавим два дочерних узла

C#:
//auto\marka\bmw\x5
TreeNode x5Node = treeView1.Nodes[0].Nodes[0].Nodes[0].Nodes[0];
//либо можно обратиться к созданному ранее узлу bmwNode
//TreeNode x5Node = bmwNode.Nodes[0];
x5Node.Nodes.Add("speed", "скорость");
x5Node.Nodes.Add("price", "цвет");
27540


Добавим значения для узлов: speed и price.
C#:
x5Node.Nodes[0].Nodes.Add("value", "250");
x5Node.Nodes[1].Nodes.Add("value", "чёрный");
27541


Теперь создадим и добавим один дочерний узел к модели Toyota Corona.

C#:
//auto\marka\toyota
TreeNode toyotaCorona = treeView1.Nodes[0].Nodes[0].Nodes[1].Nodes[1];
toyotaCorona.Nodes[1].Nodes.Add("color", "цвет");
//либо используем ранее созданный узел toyotaNode
TreeNode toyotaCorona = toyotaNode.Nodes[1];
toyotaCorona.Nodes.Add("color", "цвет");
27542


Добавим два узла: speed и price для всех автомобилей марки Toyota.

C#:
toyotaNode.Nodes[0].Nodes.Add("speed", "скорость");
toyotaNode.Nodes[0].Nodes.Add("price", "цвет");
toyotaNode.Nodes[1].Nodes.Add("speed", "скорость");
toyotaNode.Nodes[1].Nodes.Add("price", "цвет");
toyotaNode.Nodes[2].Nodes.Add("speed", "скорость");
toyotaNode.Nodes[2].Nodes.Add("price", "цвет");
При добавлении одинаковых узлов лучше использовать цикл:

C#:
foreach (TreeNode model in toyotaNode.Nodes)
{
model.Nodes.Add("speed", "скорость");
model.Nodes.Add("price", "цена");
}
27543


Добавляем дочерний узел value для каждой модели марки Toyota.

C#:
foreach (TreeNode model in toyotaNodes.Nodes)
{
if (model.Text == "Camry")
model.Nodes["speed"].Nodes.Add("value", "250");
else if (model.Text == "Corona")
model.Nodes["speed"].Nodes.Add("value", "200");
else if (model.Text == "Corolla")
model.Nodes["speed"].Nodes.Add("value", "210");
}
27544


Добавление второго корневого узла.
C#:
treeView1.Nodes.Add("moto", "Мотоциклы");
27545


Создаём и добавляем дочерний узел к второму корневому узлу.
C#:
treeView1.Nodes[1].Nodes.Add("marka", "марки");
27546


Добавим несколько марок мотоциклов.
C#:
//moto\marka
TreeNode markaNode = treeView1.Nodes[1].Nodes[0];
markaNode.Nodes.Add("name", "yamaha");
markaNode.Nodes.Add("name", "suzuki");
27547


Создаём и добавляем два дочерних узла: model и name к ранее созданному родительскому узлу yamaha.
C#:
TreeNodeCollection markiMoto = markaNode.Nodes;
markiMoto[0].Nodes.Add("model", "модель");
//model\yamaha
markiMoto[0].Nodes[0].Nodes.Add("name", "trx850");
27548


В следующем примере показано, как найти узел в элементе TreeView и добавить к нему два дочерних узла.
C#:
foreach (TreeNode marka in markiMoto)
{
if (marka.Text == "suzuki")
marka.Nodes.Add("color", "цвет").Nodes.Add("value", "красный");
}
27549


Читайте также:
 

Вложения

  • 1552733024620.png
    1552733024620.png
    19,3 КБ · Просмотры: 1 114
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!