Урок 24. TreeView с checkbox'ами

Этот урок можно рассматривать как продолжение уроков 14 и 15.

Для того, чтобы у узлов элемента управления TreeView появились checkbox'ы в узлах, необходимо установить его свойство Checkboxes в true:

Теперь добавим радиционный код, добавляющий при загрузке формы несколько узлов и подузлов к нашему дереву:

private void Form1_Load(object sender, System.EventArgs e)

{

// Создаем узел верхнего уровня.

TreeNode treeNode = treeView1.Nodes.Add("Item1");

// Создаем два подузла для него.

TreeNode treeNode11 = treeNode.Nodes.Add("Item11");

TreeNode treeNode12 = treeNode.Nodes.Add("Item12");

// Создание подузлов для подузлов.

treeNode11.Nodes.Add("Item111");

treeNode11.Nodes.Add("Item112");

treeNode12.Nodes.Add("Item121");

treeNode12.Nodes.Add("Item122");

// Раскрываем все дерево.

treeNode.ExpandAll();

}

Текст более-менее должен быть ясен из комментариев.

Если запустить теперь нашу программу, то сразу будет видно, что у узлов дерева есть checkbox'ы.

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

private void treeView1_AfterCheck(object sender,

System.Windows.Forms.TreeViewEventArgs e)

{

// Ставим галочку на всех подузлах.

SelectAllSubnodes(e.Node);

}

// Метод для установки галочки для всех подузлов.

void SelectAllSubnodes(TreeNode treeNode)

{

// Ставим или убираем отметку со всех подузлов.

foreach(TreeNode treeSubNode in treeNode.Nodes)

{

treeSubNode.Checked = treeNode.Checked;

}

}

Тут мы в методе treeView1_AfterCheck (ясно, что он вызывается при установке / снятии галочки у узла) вызываем написанный нами метод SelectAllSubnodes. Обратите внимание, что мы не используем рекурентный вызов методов - все будет работать и так.

Результат будет приблизительно такой:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: