Отправляет email-рассылки с помощью сервиса Sendsay

Финансы. Инструкция

  Все выпуски  

Уроки по C# и .NET.


Информационный Канал Subscribe.Ru

Уроки по C#. Рассылки сайта progs.biz
Выпуск № 79
 
Начало > C# > Windows > Урок 24

Э. Трельсен Модель COM и применение ATL 3.0.
Э. Трельсен. Модель COM и применение ATL 3.0
Заказать на Озоне

Подробнее


Полные версии уроков (с картинками): урок 24.

C# для Windows
Урок 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. Обратите внимание, что мы не используем рекурентный вызов методов - все будет работать и так.

Результат будет такой, как мы и ожидали.

Рассылки сайта progs.biz
Visual C++, MFC
C# и .NET
VB.NET
ASP.NET new!
Win API
C/C++
Delphi
Java
HTML, PHP, mySQL, WEB-дизайн
Flash MX
C++ Builder
Ассемблер
SQL Server
DirectX
Обзор книг
Обзор программ
Новости сайта progs.biz


PARKING.RU. Качественный ВИРТУАЛЬНЫЙ ХОСТИНГ на платформе Windows(r): поддержка NET, многофункциональная панель управления, аренда бизнес-приложений, сертифицированные специалисты. Управляемый ВЫДЕЛЕННЫЙ ХОСТИНГ на платформе Windows(r): производительные серверы, профессиональная поддержка, аренда ПО Microsoft(r), безопасность, гарантии. http://www.parking.ru


Копирование любых материалов сайта без разрешения авторов и владельцев сайта запрещено.
© 2002-2005 сайт progs.biz
© 2002-2005 Алексеев Игорь

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.csharplessons
Отписаться

В избранное