| |
VB.NET - Ein- und UmsteigerTreeview - 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 | |
| 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 |
|
|
sevGraph (VB/VBA)
Grafische Auswertungen
Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
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
|
|