ich suche nach einer Möglichkeit einen TreeView zu durchsuchen und wie es zum Beispiel After Effects macht alles überflüssige zu entfernen und am besten noch die einzelnen Nodes aufzuklappen.
Ich habe es Iterativ wie rekursiv auf alle Arten die mir eingefallen sind versucht aber ich komme nicht drauf. Wichtig ist das die Trees unterschiedlich tief gehen.
Bevor ein Knoten entfernt wird muss natürlich überprüft werden ob in den Unterknoten vllt ein Treffer ist.
Wer eine Idee hat bitte schreiben :P
Hiermit bin ich ganz nahe an der Lösung allerdings bekommt man eine System.OutOfRange Fehlermeldung wenn ich anstelle von: n.Text = ""
den Remove Befehl einsetze
Code:
Private Sub SearchNode(ByVal prnt As TreeNode)
For Each n As TreeNode In prnt.Nodes
If n.Text.Contains(TextBox1.Text) Then
n.BackColor = Color.Gray
Dim h As TreeNode = n.Parent
Else
If n.Nodes.Count = 0 Then
n.Text = ""
Else
End If
End If
SearchNode(n)
Next
End Sub
LÖSUNG
Hey
Auf die Lösung bin ich schon vor ein paar Tage gekommen habe sie aber nicht gepostet da ich dachte vllt hat jemand eine bessere:
Zunächst werden zwei unabhängige TreeNodeCollections bzw. Listen erstellt:
Dann die Suchfunktion welche durch einen klick auf Enter gestertet wird:
Hierbei handelt es sich noch nicht um die Optimale Lösung welche Beispielsweise Adobe hat, diese Suche benötigt weitaus mehr Zeit






