Pictureboxen nacheinander befüllen

  • VB.NET
  • .NET (FX) 4.5–4.8

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

    Pictureboxen nacheinander befüllen

    Moin,

    habt ihr eine bessere Möglichkeit, mehrere PictureBoxen nacheinander zu befüllen? Ich weiß, dass mein Code nicht optimal sein kann :rolleyes: Das würde mir sehr helfen.
    Es wurden zuvor mehrere Bilder in einem OFD mit Multiselect ausgewählt (bis zu 12 sind möglich, aber kein Muss) und folgender Code ist in einer For-Schleife.

    VB.NET-Quellcode

    1. For i As Integer = 0 To Zaehler - 1


    VB.NET-Quellcode

    1. If PictureBox1.Image Is Nothing Then
    2. PictureBox1.Image = Bild
    3. TextBox13.Text = Pfade(i)
    4. Else
    5. If PictureBox2.Image Is Nothing Then
    6. PictureBox2.Image = Bild
    7. TextBox14.Text = Pfade(i)
    8. Else
    9. If PictureBox3.Image Is Nothing Then
    10. PictureBox3.Image = Bild
    11. TextBox15.Text = Pfade(i)
    12. Else
    13. If PictureBox4.Image Is Nothing Then
    14. PictureBox4.Image = Bild
    15. TextBox16.Text = Pfade(i)
    16. Else
    17. If PictureBox5.Image Is Nothing Then
    18. PictureBox5.Image = Bild
    19. TextBox17.Text = Pfade(i)
    20. Else
    21. If PictureBox6.Image Is Nothing Then
    22. PictureBox6.Image = Bild
    23. TextBox18.Text = Pfade(i)
    24. Else
    25. If PictureBox7.Image Is Nothing Then
    26. PictureBox7.Image = Bild
    27. TextBox19.Text = Pfade(i)
    28. Else
    29. If PictureBox8.Image Is Nothing Then
    30. PictureBox8.Image = Bild
    31. TextBox20.Text = Pfade(i)
    32. Else
    33. If PictureBox9.Image Is Nothing Then
    34. PictureBox9.Image = Bild
    35. TextBox21.Text = Pfade(i)
    36. Else
    37. If PictureBox10.Image Is Nothing Then
    38. PictureBox10.Image = Bild
    39. TextBox22.Text = Pfade(i)
    40. Else
    41. If PictureBox11.Image Is Nothing Then
    42. PictureBox11.Image = Bild
    43. TextBox23.Text = Pfade(i)
    44. Else
    45. If PictureBox12.Image Is Nothing Then
    46. PictureBox12.Image = Bild
    47. TextBox24.Text = Pfade(i)
    48. Else
    49. End If
    50. End If
    51. End If
    52. End If
    53. End If
    54. End If
    55. End If
    56. End If
    57. End If
    58. End If
    59. End If
    60. End If


    Viele Grüße
    An die Neulinge: Nutzt Option Strict On und Option Infer Off. Dadurch kommt ihr mit Datentypumwandlungen nicht durcheinander und der Code verbessert sich um Einiges! Solche Fehler à la Dim Beispiel As Integer = "123" können nicht mehr passieren.
    @Bartosz Erstens kannst Du diese If-Prozedur zusammenschieben:

    VB.NET-Quellcode

    1. If PictureBox1.Image Is Nothing Then
    2. PictureBox1.Image = Bild
    3. TextBox13.Text = Pfade(i)
    4. ElseIf PictureBox2.Image Is Nothing Then
    5. PictureBox2.Image = Bild
    6. TextBox14.Text = Pfade(i)
    7. ElseIf PictureBox3.Image Is Nothing Then
    8. PictureBox3.Image = Bild
    9. TextBox15.Text = Pfade(i)
    10. ElseIf PictureBox4.Image Is Nothing Then
    11. PictureBox4.Image = Bild
    12. TextBox16.Text = Pfade(i)
    13. End If
    und dann noch so was:

    VB.NET-Quellcode

    1. Dim Pfade As String() = {"1", "2", "3", "4"}
    2. Dim pb As PictureBox() = {PictureBox1, PictureBox2, PictureBox3, PictureBox4}
    3. Dim tb As TextBox() = {TextBox13, TextBox14, TextBox15, TextBox16}
    4. Dim Bild = New Bitmap(10, 10)
    5. For i As Integer = 0 To 11
    6. If (pb(i) Is Nothing) Then
    7. pb(i).Image = Bild
    8. tb(i).Text = Pfade(i)
    9. End If
    10. Next
    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!
    Danke, @'Rod' genau sowas habe ich gesucht. Ich wusste nur nicht, dass man Controls auch in ein Array packen kann.

    VB.NET-Quellcode

    1. Dim tb As TextBox() = {...}
    An die Neulinge: Nutzt Option Strict On und Option Infer Off. Dadurch kommt ihr mit Datentypumwandlungen nicht durcheinander und der Code verbessert sich um Einiges! Solche Fehler à la Dim Beispiel As Integer = "123" können nicht mehr passieren.
    If (pb(i) Is Nothing) Then
    C&P-Bremse? ;)

    VB.NET-Quellcode

    1. If (pb(i).Image Is Nothing) Then
    für die zukünftigen Betrachter, einmal der Vollständigkeit halber
    An die Neulinge: Nutzt Option Strict On und Option Infer Off. Dadurch kommt ihr mit Datentypumwandlungen nicht durcheinander und der Code verbessert sich um Einiges! Solche Fehler à la Dim Beispiel As Integer = "123" können nicht mehr passieren.