zerberos Geschrieben 5. November 2008 Geschrieben 5. November 2008 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
Guybrush Threepwood Geschrieben 5. November 2008 Geschrieben 5. November 2008 Am einfachsten indem du die Items rekursiv durchsuchst
zerberos Geschrieben 5. November 2008 Autor Geschrieben 5. November 2008 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..
Guybrush Threepwood Geschrieben 5. November 2008 Geschrieben 5. November 2008 Weißt du was Rekursion bedeutet? Wieviele Unterkniten jeder Knoten hat ist dabei egal. Wie sieht denn dein Versuch aus?
xk4fu Geschrieben 6. November 2008 Geschrieben 6. November 2008 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
TDM Geschrieben 6. November 2008 Geschrieben 6. November 2008 xk4fu, das ist keine Rekursion. (... und wäre mir auch viel zu viel Schreibarbeit. )
Guybrush Threepwood Geschrieben 6. November 2008 Geschrieben 6. November 2008 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]
xk4fu Geschrieben 6. November 2008 Geschrieben 6. November 2008 tdm, du weist schon, was eine rekursion ist, oder ist zwar umständlich, aber naja... die funktion sollte auch nur als denkanstoß dienen
Guybrush Threepwood Geschrieben 6. November 2008 Geschrieben 6. November 2008 die funktion sollte auch nur als denkanstoß dienen oh sry ich merk gerade das ich dich mit dem Threadersteller verwechselt habe
TDM Geschrieben 6. November 2008 Geschrieben 6. November 2008 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.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden