Ho fatto una revisione del mio precedente esempio sull'argomento:
ListView su files e directories con corrispondenti icone con VB.NET
Come si vede dall'immagine si tratta di una pallida, lontana e indegna imitazione di Explorer.
Si parte estraendo delle periferiche di archiviazione presenti utilizzando la gerarchia System.Management
SelectQuery query = new SelectQuery("SELECT * FROM Win32_LogicalDisk");
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query))
Si aggiungono i nodi appartenenti alla gerarchia di cartelle:
int AggiungiNodo(TreeNode nodoPadre)
{
string cartella = nodoPadre.FullPath;
if (! cartella.EndsWith("\\"))
cartella += "\\";
foreach (string s in Directory.GetDirectories(cartella))
{
TreeNode nodo = new TreeNode();
nodo.Text = new DirectoryInfo(s).Name;
nodo.ImageIndex = 0;
nodo.SelectedImageIndex = 1;
nodoPadre.Nodes.Add(nodo);
}
}
Sull'evento AfterSelect prendiamo un altro livello
private void foldersTreeView_AfterSelect(object sender, TreeViewEventArgs e)
{
if (e.Node.Nodes.Count == 0)
{
AggiungiNodo(e.Node);
}
GeneraListView(e.Node.FullPath);
}
Si recupera l'icona tramite la classe helper:
[DllImport("shell32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr SHGetFileInfo(string pszPath, int dwFileAttributes, ref SHFILEINFO psfi, int cbFileInfo, int uFlags);
Riferimenti:
Nessun commento:
Posta un commento