[C#] Eigenen Folderbrowser erstellen

Drucken
( 1 Vote )
Hauptkategorie: Programmieren Kategorie: C#
Erstellt am 05.12.2011 Zuletzt aktualisiert am 02.02.2012 Geschrieben von Jonny132
In diesem Tutorial erkläre ich euch wie man einen einfach und schnell einen Folderbrowser erstellt.
Dazu erstellen wir ein neues Projekt und fügen der Form ein TreeView hinzu.
Dem TreeView geben wir den Namen folderViewer und setzten die Dock - Eigenschaft auf 'Fill'.
Nun abbonieren wir das Load - Ereignis der Form und das AfterSelect - Ereignis des TreeViews.
Um Laufwerke / Ordner auszulesen benötigen wir den IO - Namespace. Diesen fügen wir am Anfang der Form-Klasse ein.

IO - Namespace

using System.IO

Load Ereignis

 private void Form1_Load(object sender, EventArgs e)
 {
   foreach (DriveInfo drive in DriveInfo.GetDrives())
   {
     DirectoryInfo rootDirectory = drive.RootDirectory;
     TreeNode rootNode = folderViewer.Nodes.Add(rootDirectory.FullName);
     rootNode.Tag = rootDirectory;
   }
  }
Zuerst iterieren wir durch alle Laufwerke die der Computer besitzt und fügen Sie der TreeView hinzu. Dann setzten wir die Referenz der DirectoryInfo auf die Tag - Eigenschaft des TreeNodes. Die Tag - Eigenschaft bietet sich dafür wunderbar an, da sie jedes Objekt zwischenspeichern kann.
Nun kommen wir zum AfterSelect - Ereignisses des TreeViews. Dieses wird immer aufgerufen, wenn ein TreeNode im View ausgewählt wurde. Als EventArg stellt uns dieses Ereignis die ausgewählte Node zur Verfügung.

AfterSelect - Ereignis des TreeViews

private void folderViewer_AfterSelect(object sender, TreeViewEventArgs e)
{
  try
  {
    e.Node.Nodes.Clear();
    DirectoryInfo actualDirectory = (DirectoryInfo)e.Node.Tag;
    foreach (DirectoryInfo childDirectory in
             actualDirectory.GetDirectories())
    {
      TreeNode childNode = e.Node.Nodes.Add(childDirectory.Name);
      childNode.Tag = childDirectory;
    }
  }
  catch (Exception ex)
  {
    MessageBox.Show(ex.Message);
  }
 }

Wir packen alles in einen Try-Catch Block um etwaige Fehler abzufangen. Desöfteren kommt es vor, dass man keine Berechtigung für einen Ordner hat. Damit das Programm nicht Abstürzt verwenden wir den Try - Catch Block und geben im Falle eines Fehlers eine MessageBox mit der Fehlermeldung aus.
Nun zum eigentlichen Code. Zuerst löschen wir alle Childnodes des aktuell gewählten Nodes, ansonsten würden wir sie doppelt und dreifach hinzufügen.
Dann holen wir die DirectoryInfo die wir zuvor in der Tag - Eigenschaft des Nodes gespeichert haben, dafür casten wir das Object.
Die Unterverzeichnisse kriegen wir indem wir über die Collection die wir per GetDirectories() bekommen iterieren.
Wie im Form - Load Ereignis fügen wir nun diesen Ordner dem aktuellen Node hinzu und geben der Tag - Eigenschaft wieder die Referenz zur Directoryinfo.

Hier das Ergebnis:

    Veröffentlichen Sie ihre Kommentare ...