VB。 NET 在树视图中添加多个子节点

VB. NET Add multiple ChildNodes in a Treeview

我在数据库中有很多记录,我需要像这样动态填充我的树视图:下面只是我需要的示例:

TreeView1.Nodes(a).ChildNodes.Add(New TreeNode("ChildNode " & b))
TreeView1.Nodes(a).ChildNodes(b).ChildNodes.Add(New TreeNode("ChildNode 2 lvl " & b))

我正在从 MySQL Db 获取记录,我需要知道如何将多级 ChildNode 添加到循环中 For ... Next 等...

您有什么建议或想法吗???

如果你想使用不同级别的树节点,你可以使用查找功能

Dim TempNode As TreeNode = TreeView1.Nodes.Find("Node where I want to add SubNode", True).FirstOrDefault

TempNode.Nodes.Add("SubNode", "SubNode")

通过这种方式,您可以将子节点添加到您选择的任何节点。

.Find("key",True)找到具有以下键的树节点,.FirstOrDefault 首先选择。最后,您只需将新的子节点添加到临时节点。

您认为您是从 MySql 动态获取它的。它可能会导致错误,例如“正在从错误的线程调用在此控件上执行的操作。使用 Contol.Invoke 或 Control.BeginInvoke 编组到正确的线程以执行此操作。”只需将 TempNode.Nodes.Add("SubNode", "SubNode") 更改为 TreeView1.Invoke(Sub() TempNode.Nodes.Add("SubNode", "SubNode"))

示例:

Dim comm As String = "SELECT * FROM YourTableName"
Dim SqlCmnd as SqlCommand = New SqlCommand(comm, YourMySqlConnection)
Dim READER As SqlDataReader
READER = SqlCmnd.ExecuteReader
While READER.Read
    Dim NewNode As TreeNode = New TreeNode(READER.Item("origCategoryID"))
    TreeView1.Nodes.Add(NewNode)
    NewNode.Nodes.Add(READER.Item("categoryOrderID"))
End While
READER.Close()

示例 2:

While READER.Read
If TreeView1.Nodes.Find(READER.Item("OrigCatOrderID"), True).Length > 0 Then
Dim NewNode As TreeNode = TreeView1.Nodes.Find(READER.Item("OrigCatOrderID"), True).FirstOrDefault
NewNode.Nodes.Add(READER.Item("CatOrderID"), READER.Item("CatOrderID"))
Else
TreeView1.Nodes.Add(READER.Item("OrigCatOrderID"), READER.Item("OrigCatOrderID"))
TreeView1.Nodes(READER.Item("OrigCatOrderID")).Nodes.Add(READER.Item("CatOrderID"), READER.Item("CatOrderID"))
End While