Scusate il ritardo ma sono stato fuori per qualche giorno. Allora:
ho scritto la procedura che si attiva quando premo il pulsante e la funzione ricorsiva richiamata per ricostruire l'albero. Ma non funziona!
Private Sub btn_apri_Click(sender As Object, e As EventArgs) Handles btn_apri.Click
Dim linee As String(), scomponi() As String
linee = IO.File.ReadAllLines(percorso_file & prova1.Text))
For i As Integer = 0 To linee.Count - 1
'dentro scomponi ho tutti i campi separati
scomponi = Split(linee(i), "|")
'il primo valore della prima linea è la prima root, la inserisco direttamente
If i = 0 Then trw_todo.Nodes.Add(scomponi(0))
For k = 1 To UBound(scomponi) - 1
'scorre l'albero per trovare il nodo corrente
Dim nodo_sel As TreeNode = getNodeByVal(trw_todo.Nodes, scomponi(k))
nodo_sel.Nodes.Add(scomponi(k + 1))
Next
Next
End sub
'Funzione che cerca il nome del nodo. Se lo trova lo restituisce
Public Function getNodeByVal(ByVal nodes As TreeNodeCollection, ByVal text As String) As TreeNode
Dim node As New TreeNode()
For 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
Il file prova1.txt ha la struttura già indicata in precedenza, che riporto per completezza:
primo|primoA|primoAA|primoAAA
primo|primoA|primoAA|primoAAB
primo|primoA|primoAB
primo|primoB
La funzione dovrebbe trovare il nodo in base al suo nome e restituirlo alla procedura di pressione pulsante, la quale aggiunge il figlio successivo. Al primo ciclo si blocca perché non trova il nodi "i-esimo", come se l'albero trw_todo non si aggiornasse in tempo reale. Qualcuno ha un'idea?
Grazie 1000!.


Rispondi quotando
