ListView Multiselect - Was falsch gemacht?

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von Jannis22.

    ListView Multiselect - Was falsch gemacht?

    Hallo Community,

    ich komme einfach nicht auf meinen Fehler... Ich habe eine ListView mit Musik-Daten. Nun wird über ein "Hinzufügen" - Button
    ein Lied über einen OpenFileDialog hochgeladen und Titel etc eingetragen. Ich möchte aber, dass gleich mehrere Items eingetragen werden,
    die ich alle beim OFD markiert habe (Multiselect eingeschaltet). Es wird aber immer nur das erste markierte Lied eingetragen.
    Was habe ich falsch gemacht? Hier der Code:

    VB.NET-Quellcode

    1. Private Sub ShowMP3Infos(ByVal sFile As String)
    2. Dim oInfo As MP3Info = ReadMP3Info(sFile)
    3. With ListView1.Items.Add(oInfo.Titel)
    4. .SubItems.Add(oInfo.Interpret)
    5. .SubItems.Add(oInfo.Album)
    6. .SubItems.Add(OpenFileDialog1.FileName)
    7. End With
    8. End Sub
    9. Private Sub Button1_Click(ByVal sender As System.Object, _
    10. ByVal e As System.EventArgs) Handles Button1.Click
    11. ' Datei auswählen
    12. With OpenFileDialog1
    13. .Filter = "MP3-Datei (*.mp3)|*.mp3"
    14. .FileName = txtfile.Text
    15. .Multiselect = True
    16. If .ShowDialog() = Windows.Forms.DialogResult.OK Then
    17. txtfile.Text = .FileName
    18. ShowMP3Infos(txtfile.Text)
    19. End If
    20. End With
    21. End Sub


    oInfo sind die Musikdaten.
    txtfile die in .txt abgespeicherten Infos der ListView

    Viele Grüße. Und Danke im Vorraus!!!

    Jannis22 schrieb:

    Dann kommt aber:
    Fehler 1 Der Wert vom Typ "1-dimensionales Array von String" kann nicht in "String" konvertiert werden.


    Lese das String-Array mit einer Schleife aus. Wenn du Hilfe brauchst, sage bescheid.
    Ich gebe nur ungern fertigen Code.
    „Was ich gerade mache? Ich reite Hand in Hand mit dem Matthäus-Effekt auf einer Exponentialfunktion.“ ^^
    Versuche es so:

    VB.NET-Quellcode

    1. If .ShowDialog() = Windows.Forms.DialogResult.OK Then
    2. txtfile.Clear()
    3. For i = 0 To .FileNames.Length - 1
    4. txtfile.Text &= .FileNames(i) & vbCrLf
    5. Next
    6. ShowMP3Infos(txtfile.Text)
    7. End If


    Ich konnte es aber nicht testen, da "MP3Info" bei mir nicht definiert ist...
    „Was ich gerade mache? Ich reite Hand in Hand mit dem Matthäus-Effekt auf einer Exponentialfunktion.“ ^^
    Schaue dir einmal den Inhalt von .FileNames-Auflistung an...

    VB.NET-Quellcode

    1. If .ShowDialog() = Windows.Forms.DialogResult.OK Then
    2. For i = 0 To .FileNames.Length - 1
    3. Console.WriteLine(.FileNames(i))
    4. Next
    5. End If

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VB1963“ ()

    Wenn mehrere Dateien ausgewählt werden können, dann wird dir ein Array zurückgegeben.
    Also eine Art Liste mit dem Pfad zu jeder ausgewählten Datei.

    Und nun mußt du per Schleife diese Liste durchgehen und einzeln übernehmen wie schon oben beschrieben.
    Nur .Filenames.Length ist nicht korrekt. Wenn dann müßte es .Filenames.Count heißen.

    Ich würde eine For Each Schleife nehmen.

    VB.NET-Quellcode

    1. For Each sFile As String In .FileNames
    2. ShowMP3Infos(sFile)
    3. Next



    Edit:
    Ok, muß mich korrigieren.
    Length gibt wohl doch den korrekten Wert zurück.
    Hab mich von der Logik leiten lassen und greife da normal auf Count zurück.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Cane“ ()