progs.biz  
Начало>C#>Windows>Урок 15
C#
VB.NET
Visual C++.NET
Visual C++ 6
WinAPI
C++
Delphi
C++ Builder
Java
PHP
Visual Basic 6.0
DirectX
Ассемблер
Интернет
Сист. прогр-ние
Pocket PC
Обзор книг
Обзор программ

Э. Троелсен. C# и платформа .NET.
Э. Троелсен. C# и платформа .NET.
Заказать на Озоне


SpyLOG
Яндекс-цитирования

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

Рассылки нашего сайта на Subscribe.Ru
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
Label

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