VB.NET Как добавить дочерний узел к определенному узлу в дереве

Как добавить дочерний узел к определенному узлу в дереве? Скажем, у меня уже есть «Item1» в дереве, как добавить «SubItem1» в «Item1» в качестве дочернего узла?

Я знаю, что это, вероятно, очень просто, но я пробовал много вещей, я просто не могу заставить его работать.


person NetInfo    schedule 01.04.2012    source источник


Ответы (4)


Добавление дочернего узла к родительскому (не выбрано)

Сначала используйте Find(), чтобы получить ссылку на родительский узел. Затем добавьте его, используя ту же технику, что и в других разделах ниже.

Dim MyNode() As TreeNode 
MyNode = TreeView1.Nodes.Find("Item1", True)
MyNode(0).Nodes.Add("SubItem1")

Программное добавление узлов

Если вы хотите добавить дочерние узлы к определенному родительскому узлу, идея состоит в том, чтобы добавить дочерние узлы к их родительскому узлу с помощью метода parent.node.add(). Вы можете создать любое количество детей, как это.

Например, если вы хотите иметь такой сценарий:

Дедушка-> Отец-> Сын

Тогда вы можете сделать это:

dim GrandfatherNOde as treenode = tree.nodes.add("Grandfather")
dim fatherNode as treenode = GrandfatherNode.Nodes.add("Father")
dim sonNode as treenode = fatherNode.Nodes.add("Son")

Больше чтения/примеров

На этой странице есть хороший пример, который вы можете запустить для динамического добавления дочерних узлов в дерево. Они делают это на кнопке, которую они подключили так:

Private Sub AddChild_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AddChild.Click
    TView.SelectedNode.Nodes.Add(Text1.Text)
End Sub

http://www.codeproject.com/Articles/11830/The-Basic-Operations-on-using-the-TreeView-Control

person msigman    schedule 01.04.2012
comment
Спасибо за быстрый ответ, но, похоже, это не работает. - person NetInfo; 01.04.2012
comment
Я включил более полный пример. Дайте мне знать, если это работает для вас. Если нет, то будем разбираться в чем проблема оттуда. - person msigman; 01.04.2012
comment
Огромное спасибо за все эти примеры, но опять Дедушка уже добавлен. то, что я хочу сделать, это добавить отца к дедушке, не выбирая его. Я уже знаю, как добавить все три одновременно. Извините, что звучу как нуб. еще раз спасибо. - person NetInfo; 01.04.2012
comment
Нет проблем, я понимаю, что вы говорите. Позвольте мне обновить мой пост, чтобы быть более ясным. - person msigman; 01.04.2012

Если вы убедитесь, что назначаете Name на ваш TreeNode. Вы можете использовать Find, чтобы найти его и добавить узел Child.

Пример:

Public Class Form1
    Dim Nodes(5) As TreeNode


    Public Sub New()

        ' This call is required by the designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.

        Nodes(0) = New TreeNode("Root")
        Nodes(0).Name = "Root"
        Nodes(1) = New TreeNode("Item1")
        Nodes(1).Name = "Item1"
        Nodes(2) = New TreeNode("Item2")
        Nodes(2).Name = "Item2"
        Nodes(3) = New TreeNode("Item3")
        Nodes(3).Name = "Item3"
        Nodes(4) = New TreeNode("Item4")
        Nodes(4).Name = "Item4"
        Nodes(0).Nodes.Add(Nodes(1))
        Nodes(0).Nodes.Add(Nodes(2))
        Nodes(0).Nodes.Add(Nodes(3))
        Nodes(0).Nodes.Add(Nodes(4))

    End Sub

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        TreeView1.Nodes.Add(Nodes(0))
    End Sub

    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        Dim tmpNode() As TreeNode = TreeView1.Nodes.Find("Item1", True)
        'Assuming only one Match
        tmpNode(0).Nodes.Add("Child Of Item1")
    End Sub
End Class
person Mark Hall    schedule 01.04.2012

Я искал то же самое, когда попал сюда, и пока не мог найти то, что мне было нужно.

Итак, я попал на эту страницу: http://www.dotnetspider.com/forum/168335-How-add-node-treeview-VB.NET.aspx

Действительно круто и просто сделать после того, как вы посмотрите.

Оказывается, нам нужно только продолжать вводить nodes.add("nodename"), чтобы продолжать добавлять подуровни. Treeview1.Nodes.Add("Root_1").Nodes.Add("Child_Level_1").Nodes.Add("Child_Level_2")

Treeview1.Nodes.Add("Root_1").Nodes.Add("Child_Level_1").Nodes.Add("Child_Level_2")

Получится что-то вроде:

http://img716.imageshack.us/img716/7254/semttulonzk.jpg

Надеюсь, это помогло ;D.

person Gaandi    schedule 18.05.2013

* Предполагается пустой TreeView:

Dim rootNode = TreeView1.Nodes.Add("Root")

rootNode.Nodes.Add("SubNode")
person David Osborne    schedule 01.04.2012