Listview Problem Icons anzeigen

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Downloader17.

    Listview Problem Icons anzeigen

    Hallo,
    mit folgendem Code lasse ich Dateien aus einem Ordner in einer Listview anzeigen:

    Hier der Code:

    VB.NET-Quellcode

    1. Dim dlgFolderOpen As New FolderBrowserDialog()
    2. If dlgFolderOpen.ShowDialog() = DialogResult.OK Then
    3. Dim Auswahl As String = dlgFolderOpen.SelectedPath
    4. Dim directory As New System.IO.DirectoryInfo(Auswahl)
    5. For Each Datei As System.IO.FileInfo In directory.GetFiles
    6. If Datei.Extension = ".mp3" Then
    7. ListView1.Items.Add(Datei.Name) 'Dateien aus selektierten Ordner in Listview1 laden
    8. Label1.Text = (dlgFolderOpen.SelectedPath)
    9. End If
    10. Next
    11. End If

    Jetzt möchte ich aber noch die Icons wie im VLC Player (siehe Bild) angezeigt werden, also das Cover (siehe Bild) von der Musikdatei. Wenn kein Cover (Icon) vorhanden ist (siehe Bild) soll er ein Icon aus einer Imagelist nehmen.

    Hier ein Bild zur Erklärung:


    Ich hoffe ihr könnt mir helfen. :D

    MFG
    Downloader17
    Ich würde noch eine ImageList zum Form hinzufügen und dieser ImageList schon einmal das Bild zuweisen, das erscheinen soll, wenn kein Cover vorhanden ist.

    Anschließend würde ich dann beim Lesen der Dateien wenn die Datei ein Cover hat das zur ImageList hinzufügen und den entsprechenden ImageIndex dem ListViewItem zuweisen. Hier mal ein Bsp.:

    VB.NET-Quellcode

    1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. Dim dlgFolderOpen As New FolderBrowserDialog()
    3. If dlgFolderOpen.ShowDialog() = DialogResult.OK ThenDim Auswahl As String = dlgFolderOpen.SelectedPath
    4. Dim directory As New System.IO.DirectoryInfo(Auswahl)For Each Datei As System.IO.FileInfo In directory.GetFiles
    5. If Datei.Extension = ".mp3" Then
    6. Dim NeuerListViewEintrag As ListViewItem = ListView1.Items.Add(Datei.Name) 'Dateien aus selektierten Ordner in Listview1 laden
    7. Label1.Text = (dlgFolderOpen.SelectedPath)
    8. If Datei hat cover Then 'Natürlich müsste man hier noch zuvor das cover der Datei auslesen, z. B. mit der ID3TagLib
    9. ImageList1.Images.Add(cover)
    10. NeuerListViewEintrag.ImageIndex = ImageList1.Images.Count - 1
    11. Else
    12. NeuerListViewEintrag.ImageIndex = 0
    13. End If
    14. Next
    15. End If
    16. End Sub


    Das Cover musst du natürlich zuvor auch noch auslesen. Das geht zum Beispiel mit der ID3TagLib (du kannst es natürlich auch selbst machen, wenn du willst).
    Hallo,
    ich komme irgendwie nicht weiter, was muss ich in der IF Abfrage schreiben?


    VB.NET-Quellcode

    1. IF Datei hat Cover Then....



    Und wie kann ich diese Funktion anwenden:

    VB.NET-Quellcode

    1. Friend Function AlbumCover(ByVal FileName As String) As Image
    2. Dim mp3 As New ID3File(FileName)
    3. Dim pic As PictureFrame = mp3.ID3v2Tag.Frames(FrameFactory.AttachedPictureFrameId)
    4. Return pic.Picture
    5. End Function


    Ich möchte ja auch automatisch alle MP3 Dateien aus einem Ordner auslesen also die Cover.
    Ich hoffe ihr könnt mir da noch mal helfen. :)

    MFG
    Downloader17
    Ich würde jetzt in dem Fall gar keine extra Funktion machen, sondern das ganze direkt in der Form1_Load-Funktion machen.

    Hier mal der Code, wie die If-Abfrage aussehen müsste.

    VB.NET-Quellcode

    1. Dim MP3File As New ID3File(Datei.Name)
    2. Dim Cover As PictureFrame = MP3File.ID3v2Tag.Frames(FrameFactory.AttachedPictureFrameId)
    3. If Cover IsNot Nothing Then
    4. ImageList1.Images.Add(Cover.Picture)
    5. NeuerListViewEintrag.ImageIndex = ImageList1.Images.Count - 1
    6. Else
    7. NeuerListViewEintrag.ImageIndex = 0
    8. End If
    Hallo,
    ich habe jetzt im Form1_Load diesen Code stehen:

    VB.NET-Quellcode

    1. Dim dlgFolderOpen As New FolderBrowserDialog()
    2. If dlgFolderOpen.ShowDialog() = DialogResult.OK Then
    3. Dim Auswahl As String = dlgFolderOpen.SelectedPath
    4. Dim directory As New System.IO.DirectoryInfo(Auswahl)
    5. For Each Datei As System.IO.FileInfo In directory.GetFiles
    6. If Datei.Extension = ".mp3" Then
    7. Dim NeuerListViewEintrag As ListViewItem = ListView1.Items.Add(Datei.Name) 'Dateien aus selektierten Ordner in Listview1 laden
    8. Label1.Text = (dlgFolderOpen.SelectedPath)
    9. Dim MP3File As New ID3File(Datei.Name)
    10. Dim Cover As PictureFrame = MP3File.ID3v2Tag.Frames(FrameFactory.AttachedPictureFrameId)
    11. If Cover IsNot Nothing Then
    12. ImageList1.Images.Add(Cover.Picture)
    13. NeuerListViewEintrag.ImageIndex = ImageList1.Images.Count - 1
    14. Else
    15. NeuerListViewEintrag.ImageIndex = 0
    16. End If
    17. End If
    18. Next
    19. End If


    Es kommt aber folgender Fehler:


    Ich hoffe ihr könnt mir da helfen. :)


    MFG
    Downloader17
    Hallo,
    es wird leider noch ein Fehler angezeigt:



    Wieso tritt der Fehler auf? :( Ich öffne z.B. einen Ordner auf dem Desktop mit Musik dort geht alles.
    Wenn ich aber einen anderen Ordner z.B. von meiner externen Festplatte öffne kommt der Fehler woran kann das liegen? :?:


    MFG
    Downloader17