C# Treeview mit der Dateistruktur eines Ordners

Atreju93

Lieutenant
Registriert
Nov. 2010
Beiträge
596
Hallo zusammen

Ich habe folgendes Problem.

Ich möchte ein C# Programm schreiben, welches mir zwei Laufwerke oder Ordner aufeinenader abgleicht, sodass sie den gleichen Inhalt aufweisen (Nicht vorhandendene Dateien und Ordner von Laufwerk A in B und umgekehrt)

Dies ist aber nicht das Problem.

Ich möchte als "Gag" einen Tree aufbauen mit der Struktur des Ordners mit Unterordnern und Dateien, wie man es im CMD mit dem Befehl "Tree" machen kann.

Im Internet finde ich keine wirkliche Anleitung, alles ist entweder in C oder anderswertig nicht in mein Projekt portierbar.

Am liebsten wäre mir eine funktion, die mir den Inhalt eines ordnerpfades (c:/Programme) in einer Textbox oder sonswie als Tree anzeigt.

könnt ihr mir helfen?
 
Vielen Dank, genau diese Suchwörterkombination habe ich noch nicht gebraucht :D

Es hat nun geklappt.

Wenn ich noch herausfinde, dass er nicht eine eigene Form über meiner Form1 erstellt und somit mein geschriebenens Programmgrösstenteils überdeckt, ist es perfekt :)
 
Zuletzt bearbeitet:
Wenn du es selber machen willst und nicht auf fertige Komponenten zurückgreifen willst,
dann macht ne neue Form, füge ein TreeView-Element hinzu und diesen Code in Form1 ein:

Code:
        private Collection<string> dirtree;

        private void Form1_Load(object sender, EventArgs e)
        {
            dirtree = new Collection<string>();
            ReadSubDirectories("z:\\");
            BuildTree();
        }

        private void ReadSubDirectories(string Path)
        {
            try
            {
                string[] subdirs = Directory.GetDirectories(Path);
                foreach (string subdir in subdirs)
                {
                    dirtree.Add(subdir);
                    ReadSubDirectories(subdir);
                }
            }
            catch { }
        }

        private void BuildTree()
        {
            TreeNode currentNode = null;

            string toplevel = dirtree[0].Split('\\')[0];
            treeView1.Nodes.Add(toplevel, toplevel);

            foreach (string s in dirtree)
            {
                string[] levels = s.Split('\\');
                currentNode = treeView1.Nodes[0];

                foreach (string level in levels)
                {
                    if (level == toplevel)
                        continue;
                    if (currentNode.Nodes.IndexOfKey(level) == -1)
                        currentNode = currentNode.Nodes.Add(level, level);
                    else
                        currentNode = currentNode.Nodes[level];
                }
            }
        }

Den Laufwerksbuchstaben Z: musste natürlich anpassen.
 
MacGyver schrieb:
Wenn du es selber machen willst und nicht auf fertige Komponenten zurückgreifen willst,
dann macht ne neue Form, füge ein TreeView-Element hinzu und diesen Code in Form1 ein:
....
Den Laufwerksbuchstaben Z: musste natürlich anpassen.

Sorry aber ich musste gerade herzhaft lachen! :D
"Wenn du es selber machen willst, dann kopiere meinen Code hier..." :stacheln:
 
Ich meinte wenn du den Tree selber generieren willst anstatt einfach eine fertige Komponente zu füttern. Außerdem ist mein Code ja auch gar nicht fertig. Es fehlen noch die hübschen Details wie Ordnersymbole und so :)
 
Zurück
Oben