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

Автор: admin | 20 Июнь 2008 – 19:38 -


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


Tags: , , , , , , , , , , , ,
Находится в Windows и C# | No Comments »

Ответить

Вы должны быть в системе, дабы комментировать.


C# — язык программирования, сочетающий объектно-ориентированные и аспектно-ориентированные концепции. Разработан в 1998—2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как основной язык разработки приложений для платформы Microsoft .NET. Компилятор с C# входит в стандартную установку самой .NET, поэтому программы на нём можно создавать и компилировать даже без инструментальных средств вроде Visual Studio. Вузы Киева. 103-предложения: адреса, телефоны, цены. C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к С++ и Java. Язык имеет строгую статическую типизацию, поддерживает полиморфизм, перегрузку операторов, указатели на функции-члены классов, атрибуты, события, свойства, исключения, комментарии в формате XML. Переняв многое от своих предшественников — языков С++, Java, Delphi, Модула и Smalltalk — С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем: так, C# не поддерживает множественное наследование классов (в отличие от C++).