Dnes sa pozrieme na TreeView, ktorý si ukážeme na jednoduchom príklade zobrazenia stromu priečinkov.
Úvod a Príprava.
Náš program bude vedieť zobraziť zoznam priečinkov na diskovej jednotke v jednoduchom rozbalovacom zozname. Preto vo forme bude stačiť jeden zadockovaný TreeView, ktorý bude používať event BeforeExpand.
Load event Formu
V Load evente vytvoríme základnú štruktúru TreeViewu, ktorá zobrazí logické jednotky disku.
foreach (string Drive in Directory.GetLogicalDrives()) { //Pŕe každu logickú jednotku TreeNode node = new TreeNode(Drive); node.Tag = Drive; //Priradíme nový TreeNode //Tag budeme používať na identifikáciu absolútnej cesty. try { if (Directory.GetDirectories(Drive).Length != 0) { node.Nodes.Add("???"); //Ak zložka nieje prázdna, pridáme do nej nový node z textom ??? //Ten nieje povolený ako názov zložky. } } catch { //Try-Catch je použité na zabezpečenie nedostupných jednotiek. } treeView1.Nodes.Add(node); //Priradíme node TreeViewu }
Ako meno aj tag TreeNodeu priradíme cestu jednotky (napr. C:\). Ak jednotka nieje prázdna je dostupná, vložíme do Nodu ďalší Node, z textom ???. Ten slúži na zobrazenie malého znaku PLUS vedľa nodeu a na zistenie že v ňom zatiaľ nie sú pridané reálne zložky.
BeforeExpand event TreeViewu
BeforeExpand event je zavolaný vždy, keď klikneme na malé plus vedľa nodeu. Do neho vložíme nasledujúci kód :
if (e.Node.Nodes.Count != 0) { //Ak node nieje prázdny if (e.Node.Nodes[0].Text == "???") { //A obsahuje náš ??? node e.Node.Nodes.Clear(); //Tak ho vyčistíme foreach (string Dir in Directory.GetDirectories((string)e.Node.Tag)) { TreeNode node = new TreeNode(Dir.Substring(Dir.LastIndexOf('\\')+1)); node.Tag = Dir; //A pre každú zložku ktorú obsahuje vytvoríme Nový Node. Tag je použítý na absolútnu cestu //Základny text je len meno zložky. try { if (Directory.GetDirectories(Dir).Length != 0) { node.Nodes.Add("???"); //Ak nieje prázdna priradíme ??? } } catch { } e.Node.Nodes.Add(node); //A priradíme node } } }
Tento kód overí, či node nieje prázdny a či obsahuje náš špeciálny ??? node. Následne podľa jeho tagu vyhľadá zložky ktoré obsahuje a priradí ich. Opäť budeme do zložiek, ktoré niesu prázdne pridávať ??? node.
Záver
Tento kód vám vytvorí úplne jednoduchý zobrazovač zložiek.
Jeho celý kód si môžete stiahnuť tu.
Informácia : Ak poznáte ďalšie prvky, o ktorých by ste chceli vedieť viac, napíšte nám komentár sem, alebo na našu Facebookovu stránku.
Dnešný diel bol pomerne krátky, no napísal som v ňom všetko čo som chcel. Keďže momentálne nemáme pripravené žiadne ďalšie články k sérií WindowsForms, tak sa pravdepodobne uvidíme nabudúce pri inej sérií. Týmto však séria WindowsForms nekončí, a ak sa objaví niečo, čo by sme do nej mohli doplniť, pribudne ďalší diel.