» »

[C#] dodajanje direktorijev v treeview (rekurzija)

[C#] dodajanje direktorijev v treeview (rekurzija)

eXoo ::

Zdravo, imam nalogo, da naredim nek preprost windows explorer. Pri dodajanju map in datotek v treeview pa sem naletel na težavo in sicer to, da je zagon aplikacije tako počasen, da je njegova prihodnost ogrožena =). Se da to na kakšen bolj hitrejši način naredit? Sedaj mi pregleda celoten disk ob zagonu aplikacije, verjetno bi bila možna rešitev z nitmi ali s tem, da se sproti nalaga vsebina direktorijev takrat ko pritisnemo + ali dvakrat kliknemo za vpogled v direkotrij?. Še koda :

 private TreeNode rekurzija_mape(string pot)
        {
            TreeNode node2 =  new TreeNode("");
            TreeNode node = new TreeNode(pot.Substring(pot.LastIndexOf('\\')));
            node.ImageIndex = 2; 
            node.SelectedImageIndex = 2;
            node.Tag = pot;
            try
            {
                string[] dirs = Directory.GetDirectories(pot);
                for (int t = 0; t < dirs.Length; t++)
                {
                    node.Nodes.Add(rekurzija_mape(dirs[t]));
                }

                string[] files = System.IO.Directory.GetFiles(pot);
                for (int t = 0; t < files.Length; t++)
                {
                    TreeNode tn = new TreeNode(System.IO.Path.GetFileName(files[t]));
                    tn.Tag = files[t];
                    tn.ImageIndex = 0;
                    tn.SelectedImageIndex = 0;
                    node.Nodes.Add(tn);
                } 
                return node;
            }

            catch (UnauthorizedAccessException)
            {
                return node2;
            }
        }


Hvala.

FuI2cY ::

Mislim, da bi bila boljša rešitev, če bi te stvari reševal z nitmi (aplikacija ti ne bi zaštekala) ali pa če bi vsakič ob kliku na + (odpiranje pod direktorija) prebral mape znotraj te mape, itd.

FuI2cY ::

Drugače je pa sama rekurzija kar počasna, sploh pri večjih stvareh.

primer rekurzija vs iteracija: http://www.codeproject.com/Articles/211...

darkolord ::

Verjetno bi bilo najboljše background nit + nalaganje map 1 nivo nižje od trenutnega

ibro46 ::

imam eno vprašanje glede C# windows worm application!

zanima me kako se da narediti na primer da bi na en form dodal svoje ime ali pa uro in potem z ukazom (kodo ali kakorkoli pac) naedil da bi se to pojavilo na vseh drugih formih brez da bi sel in dodajal na vsakega posebej??

hvala za odgovor ze vnaprej

paco ::

na windows worm app malo težko, drugače pa,
pseudokoda;
groupbox = new groupbox;
groupbox.append(ime, ura);
form1.append(groupbox);
form2.append(groupbox);
It iz aj.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Predstavitev dvojiškega drevesa z seznamom

Oddelek: Programiranje
141753 (1353) ktka
»

[c#] iz class v class

Oddelek: Programiranje
5806 (680) darkolord
»

problem z linuxom (rabim cimprej prosim)

Oddelek: Operacijski sistemi
111381 (1197) Isotropic
»

[C#] Simobilov Glasnik

Oddelek: Programiranje
134171 (1251) Mrch
»

[visual C#] Na drugem računalniku se ne zažene

Oddelek: Programiranje
121524 (1354) Beezgetz

Več podobnih tem