vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Controls · TreeView   |   VB-Versionen: VB4, VB5, VB611.04.04
Child-Nodes eines Parent-Node-Objekt ermitteln (TreeView)

Dieser Tipp zeigt, wie sich im TreeView-Control alle Child-Node-Objekte eines bekannten Parent-Node-Objekts ermitteln lassen.

Autor:   Dieter OtterBewertung:  Views:  31.214 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Immer wieder taucht die Frage auf, wie man prüft, ob ein bestimmtes Node-Objekt im TreeView-Control weitere Child-Nodes enthält und wie man diese dann ggf. ermitteln kann.

Ob ein Node-Objekt "eigene" Child-Objekte besitzt lässt sich über die Children-Eigenschaft ermitteln, mit der man die Anzahl der Kind-Objekte zurückgeliefert bekommt:

Dim nChilds As Long
nChilds = TreeView1.Nodes("ParentKey").Children

Liefert Children einen Wert größer als Null, lässt sich über die Child-Eigenschaft das erste Kind-Objekt ermitteln:

Dim oChild As Node
 
If nChilds > 0 Then
  Set oChild = TreeView1.Nodes("ParentKey").Child
  ...
End If

Über die Next-Eigenschaft des Child-Objekts kann man jetzt auf das nächste Child-Objekt des Parent-Node-Objekts zugreifen - und zwar solange, bis die Next-Eigenschaft den Wert Nothing zurückliefert. Das Ganze sieht dann in etwa so aus:

Dim oChild As Node
 
With TreeView1.Nodes("ParentKey")
  ' Existieren Child-Objekte?
  If .Children > 0 Then
    ' Alle Child-Objekte ermitteln
    Set oChild = .Child  ' 1. Child-Objekt
    Do 
      Debug.Print oChild.Text
 
      ' nächstes Child-Objekt
      Set oChild = oChild.Next  
    Loop Until oChild Is Nothing
  End If
End With

Anwendungsbeispiel:
Sollen die Beschriftungen der einzelnen Child-Objekte eines Parent-Node-Objekts bspw. in ein String-Array gespeichert werden, kann man das wie folgt machen:

' alle Childs eines Parent-Node-Objekts in ein
' Array speichern
Dim sChild() As String
Dim nChild As Long
Dim oChild As Node
 
With TreeView1.Nodes("ParentKey")
  ' Existieren Child-Objekte?
  If .Children > 0 Then
    ' Array dimensionieren
    ReDim sChild(.Children - 1)
 
    ' Laufvariable
    nChild = 0
 
    ' 1. Child-Objekt
    Set oChild = .Child
    Do
      sChild(nChild) = oChild.Text
      nChild = nChild + 1
 
      ' nächstes Child-Objekt
      Set oChild = oChild.Next
    Loop Until oChild Is Nothing
  End If
End With



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.