Veröffentlicht 5. November 200816 j Hallo, ich habe ein TreeView TreeView1 Wie kann ich jetzt in diesem TreeView alle Nodes durchlaufen? Hintergrund: Ich möchte das TreeView solange durchlaufen bis ein knoten mit einen bestimmten text gefunden is und diesen dann selektieren
5. November 200816 j Am einfachsten indem du die Items rekursiv durchsuchst Hast du nen codebeispiel? Ich hab das Bis jetzt nur hinbekommen die Hauptknoten zu durchlaufen. Aber Jeder Hauptknoten kann nur 2 Ebenen unter sich haben. Und diese Ebenen hab ich noch nicht geschafft auszulesen..
5. November 200816 j Weißt du was Rekursion bedeutet? Wieviele Unterkniten jeder Knoten hat ist dabei egal. Wie sieht denn dein Versuch aus?
6. November 200816 j Dim MaNodes(100) As String Dim MiIndex As Integer Dim test As String MiIndex = -1 test = SearchTV(TreeView1, 0, 0, 0) Private Function SearchTV(ByVal tv As TreeView, _ ByVal node As Long, _ ByVal subnode As Long, _ ByVal subnode2 As Long) As String If tv.Nodes(node).NextNode Is Nothing Then If tv.Nodes(node).GetNodeCount(False) - 1 >= subnode Then If tv.Nodes(node).Nodes(subnode).GetNodeCount(False) - 1 >= subnode2 Then SearchTV(tv, node, subnode, subnode2 + 1) MiIndex = MiIndex + 1 MaNodes.SetValue(tv.Nodes(node).Nodes(subnode).Nodes(subnode2).Text, MiIndex) 'MessageBox.Show(tv.Nodes(node).Nodes(subnode).Nodes(subnode2).Text) Else SearchTV(tv, node, subnode + 1, 0) MiIndex = MiIndex + 1 MaNodes.SetValue(tv.Nodes(node).Nodes(subnode).Text, MiIndex) 'MessageBox.Show(tv.Nodes(node).Nodes(subnode).Text) End If Else MiIndex = MiIndex + 1 MaNodes.SetValue(tv.Nodes(node).Text, MiIndex) 'MessageBox.Show(tv.Nodes(node).Text) Exit Function End If Else If tv.Nodes(node).GetNodeCount(False) - 1 >= subnode Then If tv.Nodes(node).Nodes(subnode).GetNodeCount(False) - 1 >= subnode2 Then SearchTV(tv, node, subnode, subnode2 + 1) MiIndex = MiIndex + 1 MaNodes.SetValue(tv.Nodes(node).Nodes(subnode).Nodes(subnode2).Text, MiIndex) 'MessageBox.Show(tv.Nodes(node).Nodes(subnode).Nodes(subnode2).Text) Else SearchTV(tv, node, subnode + 1, 0) MiIndex = MiIndex + 1 MaNodes.SetValue(tv.Nodes(node).Nodes(subnode).Text, MiIndex) 'MessageBox.Show(tv.Nodes(node).Nodes(subnode).Text) End If Else SearchTV(tv, node + 1, 0, 0) MiIndex = MiIndex + 1 MaNodes.SetValue(tv.Nodes(node).Text, MiIndex) 'MessageBox.Show(tv.Nodes(node).Text) End If End If End Function
6. November 200816 j xk4fu, das ist keine Rekursion. (... und wäre mir auch viel zu viel Schreibarbeit. )
6. November 200816 j Klar ist das ne Rekursion nur macht die Funktion irgendwie nicht das was oben gefragt ist... @xk4fu Warum so umstänlich? public bool SelectNode(TreeNodeCollection nodes, string text) { foreach (TreeNode node in nodes) { if (node.Text == text) { node.TreeView.SelectedNode = node; return true; } else { if (SelectNode(node.Nodes, text)) return true; } } return false; } [/PHP]
6. November 200816 j tdm, du weist schon, was eine rekursion ist, oder ist zwar umständlich, aber naja... die funktion sollte auch nur als denkanstoß dienen
6. November 200816 j die funktion sollte auch nur als denkanstoß dienen oh sry ich merk gerade das ich dich mit dem Threadersteller verwechselt habe
6. November 200816 j tdm, du weist schon, was eine rekursion ist, oder ist zwar umständlich, aber naja... Ja, Durch die Fülle hab ich die Selbstaufrufe nicht wirklich gesehen. :floet: Tut mir leid.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.