Pouze tento týden sleva až 80 % na e-learning týkající se C# .NET
Nauč se s námi víc. Využij 50% zdarma na e-learningové kurzy.
discount week 50
Avatar
matesax
Redaktor
Avatar
matesax:9.6.2012 8:15

Dobrý den,
mohu nějak přidat do tree view neexistující uzel? Mám cesty k souborům - a ty bych tam chtěl mít... Děkuji.

 
Odpovědět
9.6.2012 8:15
Avatar
matesax
Redaktor
Avatar
Odpovídá na matesax
matesax:9.6.2012 8:24

To jako že ty soubory nejsou v jednom adresáři a nehodlám je tam dávat - prostě potřebuji vlastní uzel - jeho pod uzly budou ty mé cesty k souborům. Takže to není neexistující uzel ale uzel s odkazy z různých adresářů.

 
Nahoru Odpovědět
9.6.2012 8:24
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na matesax
David Čápka:9.6.2012 8:32

TreeView má nějakou kolekci Nodes nebo tak podobně, kam si můžeš přidat co chceš. Ve tvém případě by bylo asi lepší si udělat všechny Nodes sám, než používat adresářovou strukturu (předpokládám, že to tak máš).

Nahoru Odpovědět
9.6.2012 8:32
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Čápka
matesax:9.6.2012 8:37

No právě to je ten problém. Část mám reálnou část ne. Ano právě si hraji s Nodes. Můj problém je jen ten, že mi mů imaginární uzel bere tree view jako reálný a tak napíše error - část cesty nebyla nalezena - šlo by s tím něco udělat? Děkuji.

 foreach (DriveInfo drv in DriveInfo.GetDrives())
{
    if(drv.IsReady)
    {
    TreeNode t2 = new TreeNode();
    t2.Text = drv.Name;
    t2.Nodes.Add("");
    treeView1.Nodes.Add(t2);
    }
}

this.obsah = new TreeNode();
this.obsah.Text = "Obsah Pinetu";

using (StreamReader sr = new StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData).ToString() + @"\Pinet\save.dat"))
{
    string s;
    while ((s = sr.ReadLine()) != null)
    {
        if (s != "")
        {
            TreeNode bvc = new TreeNode();
            bvc.Text = s;
            this.obsah.Nodes.Add(bvc);
        }
    }
}

this.treeView1.Nodes.Add(this.obsah);
 
Nahoru Odpovědět
9.6.2012 8:37
Avatar
matesax
Redaktor
Avatar
Odpovídá na matesax
matesax:9.6.2012 8:58

Jo pardon - after select:

 try
{
    TreeNode current = e.Node;
    string path = current.FullPath;
    string[] Files = Directory.GetFiles(path);
    string[] Directories = Directory.GetDirectories(path);
    string[] subinfo = new string[3];
    listView1.Clear();
    listView1.Columns.Add("Name", 255);
    listView1.Columns.Add("Size", 100);
    listView1.Columns.Add("Type", 80);
    foreach (string Dname in Directories)
    {
        subinfo[0] = GetFileName(Dname);
        subinfo[1] = "";
        subinfo[2] = "FOLDER";
        ListViewItem DItems = new ListViewItem(subinfo);
        listView1.Items.Add(DItems);
    }
    foreach (string Fname in Files)
    {
        subinfo[0] = GetFileName(Fname);
        subinfo[1] = GetSizeinfo(Fname);
        subinfo[2] = GetTypeinfo(Fname);
        ListViewItem FItems = new ListViewItem(subinfo);
        listView1.Items.Add(FItems);
    }
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message,"Error - Chyba");
}
 
Nahoru Odpovědět
9.6.2012 8:58
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na matesax
David Čápka:9.6.2012 8:58

Tak to si musíš ošetřit :) Napadá mě, jestli uzel nemá vlastnost Tag, tak by sisu ukládal zda je pravý či nikoli a dle toho potom zpracovával kliknutí. Jinak mi to přijde překombinované, ale nevím, co děláš.

Nahoru Odpovědět
9.6.2012 8:58
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Čápka
matesax:9.6.2012 9:09

Já jen potřebuji vědět, jak mám v after select dostat ty mnou vytvořené poduzly,... Děkuji.

 
Nahoru Odpovědět
9.6.2012 9:09
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na matesax
David Čápka:9.6.2012 9:27

Musíš si držet referenci na ten naduzel, do kterého to chceš dát. Pak přistoupíš k jeho kolekci uzlů a tam tpřidáš nový. je tma nějaké childNodes nebo jen nodes.

Každopádně mi to přijde jako prasárna, tohle by chtělo objektovou hierarchii s abstraktní třídou a přepsanou metodou ToString().

Nahoru Odpovědět
9.6.2012 9:27
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Čápka
matesax:9.6.2012 9:48

Tak mám menší problém - odkaz prý není nastaven na instanci objektu:

listView1.Clear();
              listView1.Columns.Add("Jméno", 255);
              listView1.Columns.Add("Velikost", 100);
              listView1.Columns.Add("Typ", 80);

              for (int pocet = 0; index - pocet >= 0; pocet++)
              {
                  TreeNode[] current = e.Node.Nodes.Find(soubor[pocet], false); //Zde se projevuje chyba

                  string path = current[pocet].FullPath;
                  string[] Files = Directory.GetFiles(path);
                  string[] Directories = Directory.GetDirectories(path);
                  string[] subinfo = new string[3];

                  foreach (string Dname in Directories)
                  {
                      subinfo[0] = GetFileName(Dname);
                      subinfo[1] = "";
                      subinfo[2] = "FOLDER";
                      ListViewItem DItems = new ListViewItem(subinfo);
                      listView1.Items.Add(DItems);
                  }
                  foreach (string Fname in Files)
                  {
                      subinfo[0] = GetFileName(Fname);
                      subinfo[1] = GetSizeinfo(Fname);
                      subinfo[2] = GetTypeinfo(Fname);
                      ListViewItem FItems = new ListViewItem(subinfo);
                      listView1.Items.Add(FItems);
                  }
              }

Rovnou jsem dávám celý kód pro vytknutí nedostatků. Za pomoc děkuji předem.

 
Nahoru Odpovědět
9.6.2012 9:48
Avatar
matesax
Redaktor
Avatar
Odpovídá na matesax
matesax:9.6.2012 9:50

index je pocet vecí v poli soubor - pole soubor je soubor odkazů - které jsem ukládal do treeview.Node.Nodes jako text - tedy odkaz,...

 
Nahoru Odpovědět
9.6.2012 9:50
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na matesax
David Čápka:9.6.2012 10:03

Moc se v tom nevyznám a popravdě to ani nechci luštit. Jestli jsi to psal, tak přeci víš, jak odchytit ten node, do kterého chceš potom přidávat. Ten si uložíš do obyčejné proměnné a do jeho dětí přidáš svůj node.

Nahoru Odpovědět
9.6.2012 10:03
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 11 zpráv z 11.