Bilder mit OpenfileDialog

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Maposcha.

    Bilder mit OpenfileDialog

    Hallo!

    Ich habe ein Problem:
    Ich bin totaler Anfänger, und programmiere erst seit kurzem.

    Ich wollte mir ein Tool erstellen, bei dem ich mir Bilder anschauen kann.
    PictureBox, BindingSource un Listbox, damit hat alles geklappt.
    Jetzt wollte ich es schaffen, dass ich mehrere Bilder auf einmal öffnen kann.

    Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. OpenFileDialog1.Multiselect = True
    4. OpenFileDialog1.ShowDialog()
    5. BindingSource1.Add(OpenFileDialog1.FileNames)
    6. PictureBox1.ImageLocation = ListBox1.Text
    7. End Sub
    8. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    9. PictureBox1.ImageLocation = ListBox1.Text
    10. End Sub
    11. End Class


    So sieht das bis jetzt aus. Doch wenn ich nun ein Bild (oder mehrere) auswähle, so steht in der Listbox nur: String[]Array (auch wenn ich mehrere auswähle, nur 1 Mal). ?(

    Bitte um schnelle und funktionierende Vorschläge.
    Danke im Voraus.

    Maposcha

    Maposcha schrieb:

    Bitte um schnelle und funktionierende Vorschläge.
    Willst Du schnell funktionierende Vorschläge oder willst Du funktionierende Vorschläge, die schnell sind? :D
    -------------------------
    Form mit Button1, ListBox1, PictureBox1:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. Using dlg As New OpenFileDialog
    4. dlg.Multiselect = True
    5. If (dlg.ShowDialog() <> Windows.Forms.DialogResult.OK) Then
    6. Return
    7. End If
    8. ComboBox1.Items.AddRange(dlg.FileNames)
    9. End Using
    10. ComboBox1.SelectedIndex = 0
    11. PictureBox1.ImageLocation = ComboBox1.Text
    12. End Sub
    13. Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
    14. PictureBox1.ImageLocation = ComboBox1.Text
    15. End Sub
    16. End Class
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

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

    Dein Problem ist, dass du einen kompletten Array in BindingSource1 hinzufügst.
    Beispiel:

    VB.NET-Quellcode

    1. Dim BindingSource1 As New BindingSource
    2. Dim s(0 To 6) As String
    3. s(0) = "Test 1"
    4. s(1) = "Test 2"
    5. s(2) = "Test 3"
    6. ' Der String s entspricht hier jetzt deinem OpenFileDialog1.FileNames
    7. BindingSource1.Add(s) ' Jetzt wird das Array in dem BindingSource gespeichert
    Das Problem ist jetzt aber, dass nicht jedes Element im Array einzeln gespeichert wird.
    So fügst du dem BindingSource nicht 3 Werte hinzu (3 Strings), sondern nur einen (1 Array vom Typ String() ).
    Daher bekommst du auch wenn du das dann aus dem BindingSource ausliest auch einen Array und keinen String.

    VB.NET-Quellcode

    1. Dim DeinIndex As Integer = 0
    2. Dim p = BindingSource1.Item(DeinIndex) ' Die Variable p ist nun ein Array von String() und kein String.
    3. ' um an die Strings zukommen musst du nur p auslesen -> p(Index)