risolto...
using System;
using System.IO;
using System.Windows.Forms;
using System.ComponentModel;
using System.Collections.Generic;
namespace ImpronteCS
{
class FileSystemTreeView : TreeView
{
/// <summary>Lista dei files caricati</summary>
public List<string> FileList;
/// <summary>Aggiungere le sottodirectory?</summary>
public bool SubFolders = false;
/// <summary>Il formato dei files da caricare</summary>
public string Format = string.Empty;
/// <summary>Conteggio dei file [si può omettere]</summary>
public int FileCount = 0;
/// <summary>Costruttore</summary>
public FileSystemTreeView()
{
this.BeforeExpand += new TreeViewCancelEventHandler(FS_BeforeExpand);
this.AfterCollapse += new TreeViewEventHandler(FS_AfterCollapse);
}
private void FS_AfterCollapse(object sender, TreeViewEventArgs e)
{
//Pulisci i nodi.
e.Node.Nodes.Clear();
e.Node.Nodes.Add(".");
}
private void FS_BeforeExpand(object sender, TreeViewCancelEventArgs e)
{
try
{
e.Node.Nodes.Clear();
string needle = e.Node.Tag as string;
string[] folders = Directory.GetDirectories(needle);
string[] files = Directory.GetFiles(needle);
//Carico le sottodirectory?
if (SubFolders)
{
foreach (string folder in folders)
{
try
{
string[] s_folders = Directory.GetDirectories(folder);
string[] s_files = Directory.GetFiles(folder);
TreeNode t_folder = getNode(folder);
foreach (string s_folder in s_folders)
t_folder.Nodes.Add(getNode(s_folder));
foreach (string s_file in s_files)
{
//E' il formato che voglio?
if (s_file.EndsWith(Format))
{
//Allora aggiungilo.
FileList.Add(s_file);
t_folder.Nodes.Add(getNode(s_file));
}
}
e.Node.Nodes.Add(t_folder);
}
catch (IOException ioe)
{
//Fai niente
}
catch (UnauthorizedAccessException uae)
{
//Fai niente
}
finally
{
//Fai niente
}
}
}
foreach (string file in files)
{
//E' il formato che voglio?
if (file.EndsWith(Format))
{
//Allora aggiungilo.
FileList.Add(file);
e.Node.Nodes.Add(getNode(file));
}
}
}
catch (IOException ioe)
{
//Fai niente
}
catch (UnauthorizedAccessException uae)
{
//Fai niente
}
finally
{
//Fai niente
}
}
/// <summary>Carica la struttura</summary>
/// <param name="needle">Path da cui partire</param>
public void Load(string needle)
{
if (FileList == null)
FileList = new List<string>();
//Cancella la lista dei files.
FileList.Clear();
//Cancella i nodi
this.Nodes.Clear();
//prendi il nodo principale.
TreeNode n_node = getNode(needle);
n_node.Nodes.Add(".");
this.Nodes.Add(n_node);
//Espando il nodo root.
this.Nodes[0].Expand();
//Conteggia i files [si può omettere]
FileCount = 0;
FileSystemCounter.Count(needle, Format, SubFolders, ref FileCount);
}
/// <summary>Crea il nodo dell'albero</summary>
/// <param name="path">La cartella del Nodo.</param>
/// <returns>TreeNode</returns>
private TreeNode getNode(string path)
{
TreeNode r_node = new TreeNode();
int limit = path.LastIndexOf('\\') + 1;
string name = path.Substring(limit, (path.Length - limit));
if (name.Length < 1)
name = path.Substring(0, path.Length - 1);
r_node.Text = name;
r_node.Tag = path;
return r_node;
}
}
}
ecco qui...
spero si capisca come usarlo ^^
Non c'è emozione; c'è pace.
Non c'è ignoranza; c'è conoscenza.
Non c'è inquietudine; c'è serenità.
Non c'è caos; c'è armonia.
Non c'è morte; c'è la Forza.