Flexibel Bild in Picturebox laden!

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von ThePlexian.

    Flexibel Bild in Picturebox laden!

    Hey Community,
    ich habe eine ComboBox und eine Picturebox. Wenn das 14. Element der Combobox ausgewählt wird, was z.B. Mario heißt soll dementsprechend auch ein Mariobild in der Picturebox angezeigt werden.
    Ich habe das Bild in den Ressourcen zwischengespeichert mit dem Namen 14. Nun dachte ich dass folgender Code funktioniert:

    VB.NET-Quellcode

    1. For item = 0 To 115
    2. If ComboBox1.SelectedIndex = item Then
    3. PictureBox1.Image = My.Resources.(item.ToString)
    4. End If
    5. Next
    6. End Sub


    Nur leider kann ich das nicht so flexibel programmieren. Kennt jemand eine bessere Methode, dass wenn ich ein Item aus der Combobox ausgewählt habe, dass das zugehörige Bild angezeigt wird? Ich möchte nicht mit jeder IF Abfrage alle Elemente in der COmbobox abfragen!

    Mfg

    Cronax
    Daten und GUI trennen - wie immer xD So würde es z.B. funktionieren:

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Private daten As New List(Of Datensatz)
    4. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    5. 'Daten laden...
    6. daten.Add(New Datensatz(New Bitmap("..."), "Mario"))
    7. 'daten.Add(New Datensatz(..., "Mario")) 'Aus den Ressourcen
    8. 'Daten mit Controls verbinden
    9. ComboBox1.DataSource = daten
    10. End Sub
    11. Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
    12. Dim selectedItem As Datensatz = DirectCast(ComboBox1.SelectedItem, Datensatz)
    13. If selectedItem IsNot Nothing Then
    14. Me.Text = selectedItem.Bezeichnung
    15. PictureBox1.Image = selectedItem.Bild
    16. End If
    17. End Sub
    18. End Class
    19. Public Class Datensatz
    20. Public Sub New(ByVal bild As Bitmap, ByVal bezeichnung As String)
    21. Me.Bild = bild
    22. Me.Bezeichnung = bezeichnung
    23. End Sub
    24. Public Property Bild As Bitmap
    25. Public Property Bezeichnung As String
    26. 'Public Property Beschreibung As String
    27. Public Overrides Function ToString() As String
    28. Return Bezeichnung 'Die Combobox/Listbox muss ja wissen, was sie schreiben soll
    29. End Function
    30. End Class

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

    Cronax schrieb:

    VB.NET-Quellcode

    1. PictureBox1.Image = My.Resources.(item.ToString)
    So wird das Bild Image14 aus den Ressourcen geladen:

    VB.NET-Quellcode

    1. PictureBox1.Image = My.Resources.Image14
    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!
    @FreakJNS::
    Würde man in Zeile 19 (rein optisch) nicht lieber If Not selecteditem Is Nothing Then ?

    @RodFromGermany::
    Das ist ihm bewusst aber die Zahl als Suffix ist bei ihm bisher (wenn er FreakJNS Code nicht übernommen hat) eine Variable einer For-Schleife.
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais