vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Treeview - Verzeichnis anzeigen, in denen auch Dateien sind 
Autor: Volker Bunge
Datum: 24.04.14 12:18

Hallo zusammen,

da ich gerade dabei bin, mir einen eigenen Folderdialog zu basteln, bin ich auf ein Problem gestossen.

Ich möchte mit einem Treeview nur die Verzeichnisse sehen, in denen sich z. Bsp. MP3 Dateien befinden.

Mit dem u. g. Code bekomme ich leider alle Verzeichnisse eines Laufwerkes angezeigt. Es sollen aber nur die Verzeichnisse angezeigt werde, in dene sich MP3-Dateien befinden.

' **************************************************************
' *
' *   Explorer TreeView Komponenten-Klasse (VB.Net 2005)
' *
' *   Diese Klasse stellt ein Explorer TreeView zur Vergügung.
' *   Mit der überladenen Methode "ShowTree" wird das TreeView
' *   initialisiert.
' *
' *   Februar 2007 - VB-Power.net
' *   http://www.vb-power.net/
' *
' **************************************************************
Option Explicit On
Option Strict On
 
Imports System.IO
 
Public Class ExpTree
    Inherits System.Windows.Forms.TreeView
    Sub Clear()
        Me.Nodes.Clear()
    End Sub
    Sub Show_all()
        Me.ExpandAll()
    End Sub
    Public Sub New()
        Me.Sort()
        Me.HotTracking = True
        Me.HideSelection = False
    End Sub
 
    Public Sub ShowTree(ByVal Vorher_leeren As Boolean, ByVal Alle_Anzeigen As _
      Boolean)
        For Each d As DriveInfo In DriveInfo.GetDrives
            Me.ShowTree(d.Name, Vorher_leeren, Alle_Anzeigen) ', Alle_Anzeigen)
        Next
        If Alle_Anzeigen = True Then ExpandAll()
 
    End Sub
 
    Public Sub ShowTree(ByVal Path As String, ByVal Vorher_Leeren As Boolean, _
      ByVal Alle_Anzeigen As Boolean) ', ByVal Alle_Anzeigen As Boolean)
        If Vorher_Leeren = True Then Clear()
        Dim nNode As New TreeNode(Path)
        Me.Nodes.Add(nNode)
        Me.FillTreeNode(nNode)
 
        If Alle_Anzeigen = True Then ExpandAll()
 
    End Sub
    Public Sub ShowTree(ByVal DriveType As DriveType, ByVal Vorher_leeren As _
      Boolean, ByVal Alle_Anzeigen As Boolean)
        For Each d As DriveInfo In DriveInfo.GetDrives
            If d.DriveType = DriveType Then
                Me.ShowTree(d.Name, Vorher_leeren, Alle_Anzeigen)
            End If
        Next
    End Sub
 
    Private Sub FillTreeNode(ByVal dNode As TreeNode)
        Try
            Dim d As New DirectoryInfo(dNode.FullPath)
            For Each di As DirectoryInfo In d.GetDirectories
                'MsgBox(d.FullName & di.Name)
 
' Das hier deaktivierte Filtern funktioniert zwar, erlaubt aber keine weitere 
' Suche der Unterverzeichnisse 
                'Dim files() As String = Nothing
                'files = Directory.GetFiles(d.FullName & "\" & di.Name, "*.mp3")
                'If (files.Length > 0) Then
                '    MsgBox("Gefunden: " & d.FullName & di.Name)
                Dim nNode As New TreeNode(di.Name)
                dNode.Nodes.Add(nNode)
                nNode.Nodes.Add("")
                'End If
 
            Next
        Catch : End Try
    End Sub
 
    Protected Overrides Sub OnBeforeExpand(ByVal e As _
      System.Windows.Forms.TreeViewCancelEventArgs)
 
        Dim n As TreeNode = CType(e.Node, TreeNode)
        If n.Nodes(0).Text = "" Then
            Me.BeginUpdate()
            n.Nodes.Clear()
            Me.FillTreeNode(n)
            Me.EndUpdate()
        End If
        MyBase.OnBeforeExpand(e)
    End Sub
 
End Class
 
Aufruf:  ExpTree1.ShowTree(Tbox_Verzeichnis.Text, True, True)
Als Lösungsansatz habe ich mir überlegt, dass ich nach dem Aufbau, das Treeview noch einmal kpl. durchlaufe und mir das tiefste Verzeichnis nehme, dort nach MP3-Dateien suche und wenn keine vorhanden sind, diesen Knoten dann lösche.

Ich habe leider keine Ahnung, wie ich das bewerkstelligen soll und ich beführte, dass diese Holzhammermethode nicht sehr gut ist.

Könntet Ihr mir einen Tip / Lösung nennen. wie ich mein Problem lösen könnte?

Vielen Dank

Volker
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Treeview - Verzeichnis anzeigen, in denen auch Dateien sind1.683Volker Bunge24.04.14 12:18
Re: Treeview - Verzeichnis anzeigen, in denen auch Dateien s...1.003ModeratorFZelle24.04.14 13:02
Re: Treeview - Verzeichnis anzeigen, in denen auch Dateien s...1.026Volker Bunge25.04.14 18:55
Re: Treeview - Verzeichnis anzeigen, in denen auch Dateien s...966ModeratorFZelle25.04.14 22:04
Re: Treeview - Verzeichnis anzeigen, in denen auch Dateien s...999Volker Bunge26.04.14 11:00
Re: Treeview - Verzeichnis anzeigen, in denen auch Dateien s...971ModeratorFZelle26.04.14 14:33

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel