Tipp 0124 Dateisystem-Browser
Autor/Einsender:
Datum:
  Michael Werner
10.06.2006
Entwicklungsumgebung:   VB.Net 2003
Framework:   1.1
Mit einigen wenigen Zeilen Code lässt sich das Dateisystem in einem TreeView-Steuerelement strukturiert anzeigen, um darin zu navigieren. Mit Hilfe der IO-Methoden Directory.GetLogicalDrives, Directory.GetDirectories, Path.GetFileName werden in den TreeView-Nodes alle Laufwerke, Ordner, und Dateien angezeigt.
Um das Plus-Zeichen  an jedem Node darzustellen, wird unter jedem Node ein Dummy-Node hinzufügen. In der jeweiligen TreeNode.Tag-Eigenschaft wird festgehalten und später abgefragt, ob es sich bei diesem Strukturknoten um einen Ordner oder eine Datei handelt.
 
Private Const DUMMY As String = "DUMMY"

Private Enum ItemType
  Directory = 1
  File = 2
End Enum

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
    System.EventArgs) Handles MyBase.Load
  LoadDrivesInTreeView()
End Sub

Private Sub LoadDrivesInTreeView()
  TreeView1.Nodes.Clear()
  For Each strDrive As String In Directory.GetLogicalDrives()
    With TreeView1.Nodes.Add(strDrive)
       'Unter jedem Node einen Dummy-Node hinzufügen.
       'Dadurch wird das Plus-Zeichen angezeigt.
      .Nodes.Add(DUMMY)
    End With
  Next
End Sub

Private Sub AddFiles(ByVal nod As TreeNode)
  Dim strPath As String = nod.FullPath
  Dim strFile As String

  With nod
    For Each strFile In Directory.GetFiles(strPath)
      With nod.Nodes.Add(Path.GetFileName(strFile))
        .Tag = ItemType.File
      End With
    Next
  End With
End Sub

Private Sub AddFolders(ByVal nod As TreeNode)
  Dim strPath As String = nod.FullPath
  Dim strDir As String

  With nod
    For Each strDir In Directory.GetDirectories(strPath)

      With nod.Nodes.Add(Path.GetFileName(strDir))
         'als Directory in der Tag-Eigenschaft zwischenspeichern
        .Tag = ItemType.Directory

         ' Dummy-Node für das Plus-Zeichen
        .Nodes.Add(DUMMY)
      End With
    Next
  End With
End Sub

Private Sub TreeView1_AfterSelect(ByVal sender As Object, ByVal _
     e As System.Windows.Forms.TreeViewEventArgs) Handles _
     TreeView1.AfterSelect
  Try
    With e.Node
      Select Case .Tag
        Case ItemType.File
           'Datei öffnen
           Dim fi As New FileInfo(.FullPath)
           Process.Start(fi.ToString)
        Case ItemType.Directory
           'Ordner öffnen
           Dim di As New DirectoryInfo(.FullPath)
           Process.Start(di.ToString)
        Case Else
      End Select
    End With
  Catch exp As Exception
    MessageBox.Show(exp.Message, Me.Text)
  End Try
End Sub

Private Sub TreeView1_BeforeExpand(ByVal sender As Object, ByVal _
    e As System.Windows.Forms.TreeViewCancelEventArgs) Handles _
    TreeView1.BeforeExpand
  Try
     'Vor dem Öffnen des Nodes, existierenden Nodes aus der
     'Auflistung entfernen. Dadurch verschwindet das Plus-Zeichen,
     'falls keine Unterordner/Dateien vorhanden sind.
    e.Node.Nodes.Clear()
    AddFolders(e.Node)
    AddFiles(e.Node)
  Catch exp As IOException
  Catch exp As Exception
    MessageBox.Show(exp.ToString, Me.Text)
  End Try
End Sub
 
Weitere Links zum Thema
Dateien eines Ordners auflisten
Dateien eines Ordners filtern

Windows-Version
98/SE
ME
NT
2000
XP
Vista
Win 7


Download  (6,8 kB) Downloads bisher: [ 1008 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Tipps | Projekte | Tutorials | Bücherecke | VB-/VBA-Tipps | API-Referenz | Komponenten | VB.Net-Forum | VB/VBA-Forum | DirectX-Forum | Foren-Archiv | DirectX | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Sonntag, 22. Januar 2012