Мне было интересно, есть ли уже что-то встроенное в элемент управления AdvTree в библиотеке DotNetBar или мне нужно создать свой собственный путь.
Допустим, у меня есть 5 родительских узлов (уровень 0) в дереве , Под этими узлами уровня 0 у меня есть несколько узлов уровня 1 (я называю их узлами SubParent). В этих узлах SubParent у меня наконец будут дочерние узлы (уровень 2)
Пример:
ParentNode1
├─ SubParentNode1
│ └─ ChildNode1
│ └─ ChildNode2
│ └─ ChildNode3
ParentNode2
├─ SubParentNode2
│ └─ ChildNode1
│ └─ ChildNode2
│ └─ ChildNode3
Я хотел бы добавить новый ChildNode для ParentNode2 в элементе управления AdvTree. Я придумал несколько идей о том, как это сделать, но я не думаю, что они хороши, и мне кажется, что есть лучшее решение.
L oop через ВСЕ узлы в дереве и если node.text или node.tag = NodeText , то node.nodes.add («Новый дочерний узел»)
Использование AdvTree1 .FindNodeByText (NodeText)
- Проблема, с которой я столкнулся, заключается в том, что она будет искать ВСЕ узлы, где текст похож на строку ввода
Я надеялся, что элемент управления AdvTree смог сделать что-то вроде AdvTree.Nodes ("ParentNode1"). Nodes ("SubParentNode1"). Nodes.Add ("ChildNode4"), но кажется, что это невозможно.
Как я могу быть уверен, что когда я хочу добавить новый ChildNode в SubParentNode2, он не добавит его в SubParentNode1 из-за сходства имен?
Код для метода 1:
For Each SubParentNode As Node In AdvTree1.Nodes
If SubParentNode.Level = 1 And SubParentNode.Text = "Node To Find" Then
SubParentNode.Nodes.Add("New Child New")
End If
Next
Мне не нравится использовать этот метод, потому что я знаю, что моё дерево может стать очень большим, поэтому может потребоваться много времени, чтобы l * 1 040 * через все узлы. Я еще не тестировал скорость.
Код для метода 2:
Dim SubParentNode As Node = AdvTree.FindNodeByText("Node to Find")
If SubParentNode Is Nothing Then
'Cannot find the node
Else
'The node was found
If SubParentNode.Level = 1 Then : SubParentNode.Nodes.Add("New ChildNode")
End If
End If
Используя этот метод, если есть несколько узлов с одинаковыми именами, например: Node1, Node2, Node3, et c, функция поиска может не работать