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!