Ciao
te lo traduco in VB:
Private Sub LeggiDir(ByVal pDir As String, ByVal pTrn As TreeNode)
For Each zDirs As String In System.IO.Directory.GetDirectories(pDir)
LeggiDir(zDirs, pTrn.Nodes.Add(zDirs.Remove(0, pDir.Length + 1)))
Next
For Each zFls As String In System.IO.Directory.GetFiles(pDir)
pTrn.Nodes.Add(zFls.Remove(0, pDir.Length + 1))
Next
End Sub
Naturalmente questo è solo il codice base, giusto per far capire l'esempio, quindi può essere migliorato, ad esempio aggiungendo la gestione degli errori. Fra l'altro bisogna anche tenere conto che se viene chiamata a partire da una unità logica ("<lettera>:\"), ai primi nodi sottostanti viene tagliata la prima lettera.
Luca