ПОНЯТНО О Visual Basic NET (том 3)




Заполняем TreeView в коде - часть 3


Переименуйте эту вершину, набрав текст в текстовом поле и нажав кнопку Переименуй. Поскольку кроме Адама других вершин на дереве нет, именно она и будет выбранной, а значит будет переименована процедурой Переименуй_Click.

Щелкните по кнопке Создай сына. Первым выполнится оператор

        Dim Вершина As New TreeNode(TextBox1.Text)

Он создает объект Вершина класса TreeNode. Свойство Text

этого объекта определяется значением параметра. У нас это текст в текстовом поле.

Вторым выполнится оператор

        TV.SelectedNode.Nodes.Add(Вершина)

Поскольку выделен Адам, то к коллекции Nodes его сыновей (пустой пока), добавляется только что созданная вершина, что вы и увидите сразу же на экране, щелкнув по появившемуся плюсику. Щелкните по кнопке Создай сына несколько раз. На экране вы увидите несколько сыновей Адама.

Выделите одного из сыновей и щелкните по кнопке Создай сына. Теперь выделен сын и поэтому вершина будет добавлена к коллекции Nodes сына, а не Адама. На экране появится внук.

Выделяя того или иного из сыновей или внуков, щелкайте по кнопке Создай сына, предварительно вводя разный текст в текстовое поле. Вы увидите, как на дереве появляются внуки, правнуки и более отдаленные потомки.

Кнопка Создай брата вроде бы ни к чему, и без нее все работает. Но она мне пригодилась для объяснения свойства Parent. Выделите одну из вершин (но не корень) и нажмите кнопку. В операторе

        TV.SelectedNode.Parent.Nodes.Add(Вершина)

мы видим вот что:

TV.SelectedNode

Выбранная вершина

TV.SelectedNode.Parent

Родитель выбранной вершины

TV.SelectedNode.Parent.Nodes

Коллекция сыновей родителя выбранной вершины, то есть братья выбранной вершины

Надежный вариант программы. Наша программа делает далеко не все, что нужно, и совсем не предохранена от «неправильных» щелчков по кнопкам. Так, нам не удастся создать брата Адаму. Удалив Адама, мы окажемся не у дел. И так далее. Пишем надежный вариант программы:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load




Содержание  Назад  Вперед