Torna al Thread

'L'elemento dummy per mostrare il + Dim dummy As New TreeNode() 'Le estensioni delle icone dei file già caricati '(per evitare di ricaricare la stessa icona) Dim loadedExtensions As New List(Of String) Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Crea un'ImageList che contiene le icone dei file Dim imgList As New ImageList imgList.ImageSize = New Size(32, 32) imgList.ColorDepth = ColorDepth.Depth32Bit 'Associa l'ImageList sia per le icone piccole 'che per quelle grandi ListView1.SmallImageList = imgList ListView1.LargeImageList = imgList 'Imposta il Tag della dummy su "dummy" dummy.Tag = "dummy" 'Crea i nodi base della TreeView Dim drivers As String() = Directory.GetLogicalDrives() 'Aggiunge ogni percorso base Dim Cartelle As String For Each Cartelle In drivers Dim added As TreeNode = TreeView1.Nodes.Add(Cartelle) added.Tag = Cartelle 'Aggiunge anche il sottonodo dummy added.Nodes.Add(dummy.Clone()) Next End Sub Private Sub TreeView1_AfterExpand(ByVal sender As Object, ByVal e As TreeViewEventArgs) Handles TreeView1.AfterExpand TreeView1.BeginUpdate() Try 'ottiene le sottodirectory del nodo Dim dirs As String() = Directory.GetDirectories(e.Node.Tag) 'Se il nodo non è popolato o vi è stato 'precedentemente un errore ripopola i sottonodi If e.Node.Nodes.Count = 1 AndAlso _ (e.Node.Nodes(0).Tag = "dummy" OrElse _ e.Node.Nodes(0).Tag = "errore") Then 'Rimuove il nodo dummy (o quello dell'errore) e.Node.Nodes.RemoveAt(0) 'Cicla fra le sottodirectory For Each dir As String In dirs 'Come testo imposta solo il nome della cartella Dim added As TreeNode = e.Node.Nodes.Add(Path.GetFileName(dir)) 'Come tag imposta il percorso completo added.Tag = dir 'Aggiuge il nodo dummy added.Nodes.Add(dummy.Clone) Next End If Catch ex As Exception 'Pulisce tutti i sottonodi e.Node.Nodes.Clear() 'Aggiune un nodo di errore (Tag "errore") e.Node.Nodes.Add(ex.Message).Tag = "errore" End Try TreeView1.EndUpdate() End Sub Sub Vadoconfile(ByVal DammiDir As String) Try 'Pulisce gli elementi della ListView ListView1.Items.Clear() ' Leggo il file Dim myDir As DirectoryInfo = New DirectoryInfo(DammiDir) 'Il file della directory Dim file As FileInfo 'L'oggetto che viene aggiunto Dim li As ListViewItem For Each file In myDir.GetFiles 'Aggiunge come testo il nome del file li = ListView1.Items.Add(file.Name) 'Ottiene l'estensione del file Dim ext As String = Path.GetExtension(file.Name) 'Se l'icona per il file non è ancora stata caricata lo fa: If Not loadedExtensions.Contains(ext) Then 'Estrae l'icona associata al file Dim icn As Icon = Icon.ExtractAssociatedIcon(file.FullName) 'Aggiunge l'icona all'elenco dell'ImageList li.ImageList.Images.Add(ext, icn) 'Aggiunge l'estensione all'elenco di quelle caricate loadedExtensions.Add(ext) End If 'Imposta l'icona da visualizzare li.ImageKey = ext Next Catch ex As Exception End Try End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'Ottiene i file dal percorso completo '(che avevamo salvato nel Tag del nodo) Vadoconfile(TreeView1.SelectedNode.Tag) End Sub
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5