Ecco un metodo ricorsivo molto comodo per ritornare un singolo nodo di un Treeview, dato il suo nome.

C#

public TreeNode getNodeByVal(TreeNodeCollection nodes, string text)

{
TreeNode node = new TreeNode();
for(int i=0; i<nodes.Count; i++)
{
if(nodes[i].Text.Equals(text))
{
node = nodes[i];
break;
}
getNodeByVal(nodes[i].Nodes, text);
}
return node;
}

VB.NET
Public Function getNodeByVal(ByVal nodes As TreeNodeCollection, ByVal text As String) As TreeNode

Dim node As New TreeNode()
For Dim i As Integer = 0 To nodes.Count Step 1
If nodes(i).Text.Equals(text) Then
node = nodes(i)
Exit For
End If
getNodeByVal(nodes(i).Nodes, text)
Next
Return node
End Function

Allo stesso modo, quindi ricorsivamente, un Treeview può essere letto in tutta la sua interezza, permettendoci di arrivare a tutte le proprietà di tutti i nodi dell'albero.