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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: