steuerelementenamen zusammensetzen

  • VB.NET

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von hal2000.

    steuerelementenamen zusammensetzen

    Hi!

    Ich programmiere gerade ein Kniffel Spiel und habe folgendes Problem:

    VB.NET-Quellcode

    1. Private Sub butWürfeln_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butWürfeln.Click
    2. For i = 1 To 5
    3. intWurf(i) = wurf()
    4. Next
    5. Select Case intWurf(1)
    6. Case 1
    7. pic1.Image = Kniffel.My.Resources.Resources._1
    8. Case 2
    9. pic1.Image = Kniffel.My.Resources.Resources._2
    10. Case 3
    11. pic1.Image = Kniffel.My.Resources.Resources._3
    12. Case 4
    13. pic1.Image = Kniffel.My.Resources.Resources._4
    14. Case 5
    15. pic1.Image = Kniffel.My.Resources.Resources._5
    16. Case 6
    17. pic1.Image = Kniffel.My.Resources.Resources._6
    18. End Select
    19. Select Case intWurf(2)
    20. Case 1
    21. pic2.Image = Kniffel.My.Resources.Resources._1
    22. Case 2
    23. pic2.Image = Kniffel.My.Resources.Resources._2
    24. Case 3
    25. pic2.Image = Kniffel.My.Resources.Resources._3
    26. Case 4
    27. pic2.Image = Kniffel.My.Resources.Resources._4
    28. Case 5
    29. pic2.Image = Kniffel.My.Resources.Resources._5
    30. Case 6
    31. pic2.Image = Kniffel.My.Resources.Resources._6
    32. End Select
    33. Select Case intWurf(3)
    34. Case 1
    35. pic3.Image = Kniffel.My.Resources.Resources._1
    36. Case 2
    37. pic3.Image = Kniffel.My.Resources.Resources._2
    38. Case 3
    39. pic3.Image = Kniffel.My.Resources.Resources._3
    40. Case 4
    41. pic3.Image = Kniffel.My.Resources.Resources._4
    42. Case 5
    43. pic3.Image = Kniffel.My.Resources.Resources._5
    44. Case 6
    45. pic3.Image = Kniffel.My.Resources.Resources._6
    46. End Select
    47. Select Case intWurf(4)
    48. Case 1
    49. pic4.Image = Kniffel.My.Resources.Resources._1
    50. Case 2
    51. pic4.Image = Kniffel.My.Resources.Resources._2
    52. Case 3
    53. pic4.Image = Kniffel.My.Resources.Resources._3
    54. Case 4
    55. pic4.Image = Kniffel.My.Resources.Resources._4
    56. Case 5
    57. pic4.Image = Kniffel.My.Resources.Resources._5
    58. Case 6
    59. pic4.Image = Kniffel.My.Resources.Resources._6
    60. End Select
    61. Select Case intWurf(5)
    62. Case 1
    63. pic5.Image = Kniffel.My.Resources.Resources._1
    64. Case 2
    65. pic5.Image = Kniffel.My.Resources.Resources._2
    66. Case 3
    67. pic5.Image = Kniffel.My.Resources.Resources._3
    68. Case 4
    69. pic5.Image = Kniffel.My.Resources.Resources._4
    70. Case 5
    71. pic5.Image = Kniffel.My.Resources.Resources._5
    72. Case 6
    73. pic5.Image = Kniffel.My.Resources.Resources._6
    74. End Select
    75. End Sub


    Das muss doch auch einfacher gehen. Ich hab zuerst versucht das ganze mit einer for Schleife zu Lösen, indem ich einfach statt pic1.image= sowas wie pic + [ZählerDerSchleife].image= schreibe, und bei dem Pfad des Bildes statt ...Resources._1 sowas wie ...Resources._ + [Integer] ...
    Nur so klappt das nicht ;) Gibt es da eine Möglichkeit die Namen der Steuerelemente bzw die Bildpfade mit einer Variable zusammenzusetzen?
    Gibt es da eine Möglichkeit die Namen der Steuerelemente bzw die Bildpfade mit einer Variable zusammenzusetzen?
    Nein.

    Du kannst das ganze aber mit Schleifen beschreiben:

    VB.NET-Quellcode

    1. Dim picBoxes As New ArrayList
    2. 'Hier werden alle PictureBoxen in eine ArrayList eingelesen. Voraussetzung für diese einfache Schleife ist, dass nur die 5 PictureBoxen existieren (und keine weiteren). Sind noch weitere vorhanden, muss die Schleife um zusätzliche Tests (Stichwort pb.Name) erweitert werden.
    3. For Each pb As PictureBox In Me.Controls
    4. picBoxes.Add(pb) 'Achtung: Die Reihenfolge muss stimmen! --> ggf. im Designer anpassen.
    5. Next
    6. [Deine For-Schleife]
    7. ' i greift hier wieder auf das Array zurück. Da die ArrayList nullbasiert ist, liegt die erste PictureBox an 0-ter Stelle - also bei i - 1.
    8. For i = 1 To 5
    9. Select Case intWurf(i)
    10. Case 1
    11. picBoxes(i - 1).Image = My.Resources.Resources._1
    12. Case 2
    13. picBoxes(i - 1).Image = My.Resources.Resources._2
    14. Case 3
    15. [...]
    16. End Select
    17. Next
    Gruß
    hal2000