TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
 Specialized Dev Zones Research Center eBook Library .NET Java C++ Web Dev Architecture Database Security Open Source Enterprise Mobile Special Reports 10-Minute Solutions DevXtra Blogs Slideshow

Language: Visual Basic
Expertise: Beginner
Nov 4, 1999

### WEBINAR:On-Demand

Building the Right Environment to Support AI, Machine Learning and Deep Learning

# Enumerate Treeview Nodes Recursively

Trying to parse a set of TreeView nodes and their children's nodes and their children's nodes can be confusing. This algorithm makes the process easier. Recursion describes an algorithm that can call itself. This is especially useful in COM's object hierarchy. Collections that can reference other collections can be easily handled with a recursive procedure. To begin the recursion, place this code in a CommandButton labeled "View Nodes." Here you create a variable to store the results of the procedure and start the recursion, and also display the results when the routine is finished:
``````
Dim N As Node, aNodes As String, lLevel As Long
Set N = TreeView1.SelectedItem
If N.Children Then aNodes = "+" & N.Text Else _
aNodes = N.Text
EnumChildren N, aNodes, lLevel
MsgBox aNodes
``````
Next is the recursive procedure. It calls itself after changing the Node parameter, and the lLevel variable is incremented at the beginning of the routine and decremented at the end. This variable determines the distance to tab from the beginning of the display line, and therefore shows the nodes in the proper child-parent relationship:
``````
Sub EnumChildren(N As Node, aNodes As String, _
lLevel As Long)
lLevel = lLevel + 1
Dim nC As Node
If N.Children Then
Set nC = N.Child
Do
If nC.Children Then
aNodes = aNodes & vbCrLf & String\$ _
(lLevel, vbTab) & "+" & nC.Text
Else
aNodes = aNodes & vbCrLf & String\$ _
(lLevel, vbTab) & nC.Text
End If
EnumChildren nC, aNodes, lLevel
If nC.Index = N.Child.LastSibling. _
Index Then Exit Do
Set nC = nC.Next
Loop
End If
lLevel = lLevel - 1
End Sub
``````
Matt Hart

 Submit a Tip Browse "XML" Tips Browse All Tips
Comment and Contribute

(Maximum characters: 1200). You have 1200 characters left.

Thanks for your registration, follow us on our social networks to keep up-to-date