WinForms 19 – TreeView

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

Designer

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.

Window

Jeho celý kód si môžete stiahnuť tu. download

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.

Pridajte Komentár

Vaša e-mailová adresa nebude zverejnená.

Scroll to Top