[VB 2012] Treeview da file txt

venerdì 16 ottobre 2015 - 11.18
Tag Elenco Tags  VB.NET  |  Windows 7  |  Visual Studio Express

isotopo75 Profilo | Newbie

Buongiorno a tutti,
ho un problema con il popolamento di una treeview in VB 2012 Express. Vi spiego in dettaglio.
Ho un file .txt con delle righe fatte così:

primo|primoA|primoAA|primoAAA
primo|primoA|primoAA|primoAAB
primo|primoA|primoAB
primo|primoB

Leggo il file riga per riga e splitto ogni riga in un array di string, ottenendo, quindi, un array del tipo:

primo
primoA
primoAA
primoAAA

Ciascuno degli elementi deve diventare un nodo della treeview così da popolarla come segue:
primo
-primoA
--primoAA
---primoAAA

La seconda riga, avendo gli stessi nodi della prima, popolerà solo l'ultimo nodo della treeview che, alla fine, diventerà:
primo
-primoA
--primoAA
---primoAAA
---primoAAB
--primoAB
-primoB

Il problema è che non riesco ad implementare i nodi oltre il primo figlio, perché in un ciclo ricorsivo, quando punto il nodo precedente mi dice che l'indice non è compreso nell'intervallo. Io ho fatto così:

linee = IO.File.ReadAllLines(percorso & nomefile.txt)

scomponi = Split(linee(0),"|") 'ottengo la scomposizione della prima linea del file

While i < UBound(scomponi)

If i = 0 Then

treeview.Nodes.Add(scomponi(i))
treeview.Nodes(i).Nodes.Add(scomponi(i + 1))
i = i + 1
Else
trw_todo.Nodes(i).Nodes.Add(scomponi(i + 1)) 'riga 1
end if
End While

In pratica, al primo passaggio inserisco il nodo root ed il primo figlio, dal secondo passaggio in poi, vorrei selezionare il padre precedente ed inserire il nuovo figlio, ma il ciclo mi torna appunto l'errore alla 'riga 1 dicendo che l'indice "i" non è compreso nell'intervallo, come se la treeview non fosse aggiornata dopo l'inserimento dei primi 2 nodi. Ho provato in tutti i modi, creando una lista che potesse contenere la descrizione dell'albero da inserire ma non funziona, oppure cercando ogni singolo nodo con una funzione che ne cerchi il nome... tutte le volte si pianta il ciclo!

Qualcuno ha un'idea di come procedere?

Ho trovato anche altri modi di implementare la funzione nodes.add sull'msdn che consentono di specificare il nodo figlio, tipo questa:

tvwMyTree.Nodes.Add "7 node", tvwChild, "11 node"

ma sul mio vb 2012 express questa modalità di implementare la Add non c'è!

Qualcuno ha idea di come si potrebbe procedere?

Grazie 1000 a tutti!

Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5