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

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

  Все выпуски  

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


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

Уроки по C#. Рассылки сайта progs.biz  
Начало > C# > Windows > Урок 15

М. Макдональд. Рецепты программирования на Visual Basic.NET.
М. Макдональд. Рецепты программирования на Visual Basic.NET.
Заказать на Озоне

Подробнее


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

C# для Windows
Урок 15. Продолжаем работать с TreeView

На этом уроке мы с вами посмотрим, как можно найти узел по его тексту.

Добавьте на форму программы, написанной на прошлом уроке, еще одну кнопку и тествое поле. Для кнопки задайте значение свойст Name и Text на find и Find соответственно, для тествого поля эти же свойства установите в findNode и пустую строку.

Теперь в обработчике нажатия на кнопку вставьте следующий код:

        // Выделение узла по названию.
        private void find_Click(object sender, System.EventArgs e)
        {
            // Снимаем выделение с дерева.
            treeView1.SelectedNode = null;
            // Ищем узел с определенным текстом.
            TreeNode tn = FindNode(treeView1, findNode.Text);
            // Если нашли,
            if(tn!=null)
            {
                // то выделяем.
                treeView1.SelectedNode = tn;
                treeView1.Focus();
            }
        }

Как вы видите, тут мы используем метод FindNode, который ищет узел по его названию. Это наш метод, который мы еще не написали. Исправим это. Добавьте этот метод в класс формы:

        // Поиск узла в дереве по названию.
        private TreeNode FindNode(TreeView tv, string name)
        {
            // Ищем в узлах первого уровня.
            foreach(TreeNode tn in tv.Nodes)
            {
                // Если нашли,
                if(tn.Text==name)
                {
                    // то возвращаем.
                    return tn;
                }
            }
            
            // Ищем в подузлах.
            TreeNode node; 
            foreach(TreeNode tn in tv.Nodes)
            {
                // Делаем поиск в узлах.
                node = FindNode(tn, name);
                // Если нашли,
                if(node!=null)
                {
                    // то возвращаем.
                    return node;
                }
            }
            // Ничего не нашли.
            return null;
        }

Принцип действия метода FindNode такой - сначала просматриваем узлы верхнего уровня (корневые). Если нашли нужный узел, то его и возвращаем. Если не нашли узел среди корневых узлов, то просматриваем их еще раз - но на этот раз для каждого корневого узла вызываем метод FindNode (обратите внимание, что у него первым параметром идет не само дерево, а узел дерева), который ищет узел с заданным именем у конкретного узла дерева. Этот метод нам также предстоит написать - но уже на следующем уроке.

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


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


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

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

В избранное