Az alkalmazás Form-ján elhelyezett TextBox kontrolban kell megadnunk a listázandó mappa elérési útvonalát, majd a ’Feltöltés’ feliratú gombra kattintva indítható a művelet.
A példában egy FillTreeView nevű saját metódussal valósítjuk meg a TreeView kontrol feltöltését. A metódus meghívása előtt ellenőrizzük, hogy létezik-e a megadott könyvtár. A művelet végrehajtásához rekurziót használunk.
A TreeView kontrol csomópont-listájában futtatás előtt létre kell hoznunk egy gyökércsomópontot, melyet átadunk a feltöltő metódusnak a mappa nevét tartalmazó karakterlánc kíséretében:
private void fillButton_Click(object sender, System.EventArgs e)
{
...
if (FillTreeView(pathText.Text,dirTree.Nodes[0]) != 0)
{
...
}
}
A metódus kódjában először létrehozunk egy információs objektumot a megadott mappához:
private int FillTreeView(string strDirectory, TreeNode nodeParent)
{
int res = 0;
try
{
DirectoryInfo curDirectory = new DirectoryInfo(strDirectory);
Létrehozunk egy-egy listát az állományok és alkönyvtárak nevei számára:
DirectoryInfo[] directoryList;
FileInfo[] fileList;
A listákat feltöltjük az említett nevekkel:
directoryList = curDirectory.GetDirectories();
fileList = curDirectory.GetFiles();
Majd végigmegyünk a listákon úgy, hogy amikor a könyvtárak neveit vesszük sorra, mindegyikre meghívjuk a FillTreeView metódust újra. Az egyes elemek felfűzéséhez TreeNode objektumokat hozunk létre, melyek property-jeiben megadjuk többek közt, hogy milyen ikon jelenjen meg a név mellett. Az ikonok sorszáma a TreeView kontrol ImageList property-jében megadott lista megfelelő elemének sorszámával azonos. Végül a TreeNode objektumot felfűzzük a TreeView kontrol Node-listájára:
foreach (FileInfo curfileInfo in fileList)
{
TreeNode newFileNode = new TreeNode();
newFileNode.Text = curfileInfo.Name;
newFileNode.ImageIndex = 1;
newFileNode.SelectedImageIndex = 1;
nodeParent.Nodes.Add(newFileNode);
}
A könyvtárak esetén is TreeNode objektumot hozunk létre, paraméterezzük, majd a listára fűzzük. A ciklus végén meghívjuk a metódust újra:
foreach (DirectoryInfo curdirInfo in directoryList)
{
TreeNode newDirNode = new TreeNode();
newDirNode.Text = curdirInfo.Name;
string strDir;
strDir = curdirInfo.FullName;
nodeParent.Nodes.Add(newDirNode);
FillTreeView(strDir, newDirNode);
}
}
catch
{
...
}
}
A művelet végén a könyvtárstruktúra látható a TreeView kontrolban. Az egyes fa-levelek mellett található ikonok egy imgList nevű lista-objektum elemei, melyeket az alkalmazás mappájának /images almappában helyeztünk el.