Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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..

    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

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]

tdm, du weist schon, was eine rekursion ist, oder

ist zwar umständlich, aber naja...

die funktion sollte auch nur als denkanstoß dienen ;)

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.