Создание и добавление узлов в элементе TreeView
В данной статье хочу показать на простом примере, как можно программно создавать и добавлять узлы в элементе управления TreeView.
Создание узлов
Каждый узел в элементе TreeView представляет собой объект класса TreeNode.
С помощью свойств: Name и Text можно задать имя и лейбл (текст, который будет отображаться в элементе TreeView) для созданного узла.
Создание и добавление корневых узлов
Элемент управления TreeView используется для вывода данных в виде дерева. Самый первый узел дерева, к которому затем крепятся все остальные узлы, называется корневым. В одном элементе TreeView может быть несколько корневых узлов.
Чтобы добавить созданный корневой узел в элемент TreeView его нужно поместить в коллекцию типа TreeNodeCollection, доступ к которой можно получить с помощью свойства Nodes.
Для добавления новых элементов в коллекцию используются методы Add и AddRange.
Метод Add позволяет не только добавлять новые узлы, но и создавать их. Например, корневой узел auto можно создать и добавить следующим образом:
Создание и добавление дочерних узлов
Любой узел, добавленный к уже существующему узлу дерева, называется дочерним.
Давайте рассмотрим, как создать дочерний узел marka и добавить его к корневому узлу car.
Либо можно создать и добавить этот дочерний узел другим путем:
Коллекция Nodes
Далее рассмотрим, как работать с коллекцией Nodes элемента управления TreeView.
В первом примере создадим и добавим всё тот же дочерний узел marka к корневому узлу car.
В квадратных скобках указывается либо индекс элемента, либо его имя.
Каждый узел в элементе TreeView хранит все дочерние узлы внутри всё той же коллекции типа TreeNodeCollection, доступ к которой также осуществляется с помощью свойства Nodes.
Выше приведённый код можно сократить:
В следующем примере создадим два дочерних узла и добавим их к узлу marka.
К каждой марки автомобиля добавим по одной модели.
Добавим ещё несколько моделей для каждой марки авто.
Получается довольно длинная запись, которую можно сократить, например следующим образом:
К узлу x5 добавим два дочерних узла
Добавим значения для узлов: speed и price.
Теперь создадим и добавим один дочерний узел к модели Toyota Corona.
Добавим два узла: speed и price для всех автомобилей марки Toyota.
При добавлении одинаковых узлов лучше использовать цикл:
Добавляем дочерний узел value для каждой модели марки Toyota.
Добавление второго корневого узла.
Создаём и добавляем дочерний узел к второму корневому узлу.
Добавим несколько марок мотоциклов.
Создаём и добавляем два дочерних узла: model и name к ранее созданному родительскому узлу yamaha.
В следующем примере показано, как найти узел в элементе TreeView и добавить к нему два дочерних узла.
Читайте также:
В данной статье хочу показать на простом примере, как можно программно создавать и добавлять узлы в элементе управления TreeView.
Создание узлов
Каждый узел в элементе TreeView представляет собой объект класса TreeNode.
C#:
//создание узла
TreeNode node = new TreeNode();
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 = "автомобили";
Для добавления новых элементов в коллекцию используются методы Add и AddRange.
C#:
TreeNode rootNode = new TreeNode();
rootNode.Name = "auto";
rootNode.Text = "автомобили";
//добавляем корневой узел в TreeView
treeView1.Nodes.Add(rootNode);
Метод 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 элемента управления 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", "марки");
В следующем примере создадим два дочерних узла и добавим их к узлу marka.
C#:
treeView1.Nodes[0].Nodes[0].Nodes.Add("bmw", "BMW");
treeView1.Nodes["auto"].Nodes["marka"].Nodes.Add("toyota", "Toyota");
К каждой марки автомобиля добавим по одной модели.
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");
Добавим ещё несколько моделей для каждой марки авто.
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");
C#:
treeView1.Nodes["auto"].Nodes["marka"].Nodes["toyota"].Nodes.Add("name", "Corona");
treeView1.Nodes["auto"].Nodes["marka"].Nodes["toyota"].Nodes.Add("name", "Corolla");
Получается довольно длинная запись, которую можно сократить, например следующим образом:
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");
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", "цвет");
Добавим значения для узлов: speed и price.
C#:
x5Node.Nodes[0].Nodes.Add("value", "250");
x5Node.Nodes[1].Nodes.Add("value", "чёрный");
Теперь создадим и добавим один дочерний узел к модели 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", "цвет");
Добавим два узла: 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", "цена");
}
Добавляем дочерний узел 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");
}
Добавление второго корневого узла.
C#:
treeView1.Nodes.Add("moto", "Мотоциклы");
Создаём и добавляем дочерний узел к второму корневому узлу.
C#:
treeView1.Nodes[1].Nodes.Add("marka", "марки");
Добавим несколько марок мотоциклов.
C#:
//moto\marka
TreeNode markaNode = treeView1.Nodes[1].Nodes[0];
markaNode.Nodes.Add("name", "yamaha");
markaNode.Nodes.Add("name", "suzuki");
Создаём и добавляем два дочерних узла: model и name к ранее созданному родительскому узлу yamaha.
C#:
TreeNodeCollection markiMoto = markaNode.Nodes;
markiMoto[0].Nodes.Add("model", "модель");
//model\yamaha
markiMoto[0].Nodes[0].Nodes.Add("name", "trx850");
В следующем примере показано, как найти узел в элементе TreeView и добавить к нему два дочерних узла.
C#:
foreach (TreeNode marka in markiMoto)
{
if (marka.Text == "suzuki")
marka.Nodes.Add("color", "цвет").Nodes.Add("value", "красный");
}
Читайте также: