Newsgroup: it.comp.lang.visual-basic
Titolo: [vb.net] Caricamento directory in treeview

Ho buttato giů qualche riga di codice per far caricare in una treeview 
le directory di un disco senza dover caricare subito tutte le directory.
Con l'asterisco si espandono tutte le sottodirectory della directory 
selezionata.
    Private Sub SalvaDati_Load(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles MyBase.Load
        'qui dico alla treeview i due roots
        Dim Root1 As New TreeNode("c:\") : TreeView1.Nodes.Add(Root1)
        Dim Root2 As New TreeNode("d:\") : TreeView1.Nodes.Add(Root2)
        'qui riempio di directory le roots
        Riempi(Root1) : Riempi(Root2)
    End Sub
    Private Sub Riempi(ByVal nodo As TreeNode)
        Dim Dir As New System.IO.DirectoryInfo(nodo.FullPath)
        Dim Directory As System.IO.DirectoryInfo
        Try
            For Each Directory In Dir.GetDirectories
                Dim NodoNuovo As New TreeNode(Directory.Name)
                nodo.Nodes.Add(NodoNuovo)
                NodoNuovo.Nodes.Add("*")
            Next
        Catch err As UnauthorizedAccessException
            MsgBox("Non si hanno le autorizzazioni per accedere alla 
directory", MsgBoxStyle.Exclamation, "Accesso negato!!!")
        End Try
    End Sub
    Private Sub TreeView1_BeforeExpand(ByVal sender As Object, ByVal e 
As System.Windows.Forms.TreeViewCancelEventArgs) Handles 
TreeView1.BeforeExpand
        If e.Node.Nodes(0).Text = "*" Then
            e.Node.Nodes.Clear()
            Riempi(e.Node)
        End If
    End Sub
Avrei qualche domanda:
1) non riesco a capire come fare per caricare automaticamente anche le 
root, non solo le relative directory, senza quindi che debba dirglielo 
io (vedi le due Dim della Sub SalvaDati_Load);
2) c'č un modo per leggere quanto spazio occupa una directory 
selezionata?
3) c'č un insieme che raccoglie tutte le directory che hanno il check 
abilitato(CheckBoxes = True)? Se non c'č, in che modo posso leggere le 
relative directory per poi inserirle (e qui so farlo) in un arraylist?
Christian

 relative directory per poi inserirle (e qui so farlo) in un arraylist?
Ho trovato il modo di risolvere il punto 2, probabilmente il più 
semplice.
Chi mi dà una mano sugli altri due?
Christian

 Chi mi dà una mano sugli altri due?
1) Beh, qualcuno le root dovrà dirglielo di caricarle.
Forse era meglio fare una Riempi(byval root as string) e fare tutto nella 
Riempi()
2) Scorri l'imsieme Nodes per i nodi Checked.
Ciao 

 2) Scorri l'imsieme Nodes per i nodi Checked.
Qui le cose vanno meglio, perchè dopo tanta ricerca l'ho trovato!!!
Nell'evento AfterCheck della TreeView metto tutto l'occorrente per 
leggere e caricare dove mi pare le directory, però mi legge solo le 
prime directory, quelle subito dopo il root, e non le sottodirectory...
Nel codice qui sotto il for each legge tutte le directory di primo 
livello ed esamina se hanno il check, però ignora le sottodirectory. 
Come fare per fargliele leggere? (forse potrei utilizzare la Sub 
RiempiNodo, ma non saprei se è corretto e come fare).
    Private Sub TreeView1_AfterCheck(ByVal sender As Object, ByVal e As 
System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterCheck
        Dim NodoSelex As TreeNode
        For Each NodoSelex In TreeView1.Nodes(0).Nodes
            If NodoSelex.Checked Then
                NodoSelex.BackColor = Color.Yellow
                textbox1.Text = NodoSelex.Text
                'al posto della texbox inserirò le directory
                'nell'arraylist
            Else
                NodoSelex.BackColor = Color.White
            End If
        Next

Nessun ulteriore aiutino?
Christian
