Этот урок можно рассматривать как продолжение уроков 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. Обратите внимание, что мы не используем рекурентный вызов методов - все будет работать и так.
Результат будет приблизительно такой: