Bei allen PictureBoxen die Background color ändern

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Gather.

    Bei allen PictureBoxen die Background color ändern

    Hallo liebe com.

    Ich möchte Gerne Bei allen 42 PictureBoxen die Backcolor Ändern.

    Problem ich will nicht immer

    VB.NET-Quellcode

    1. PictureBox1.BackColor = Color.White


    Schreiben sondern Z.b

    VB.NET-Quellcode

    1. All PictureBox.BackColor = Color.White


    Die ganzen pictureBoxen Brauche ich den, ich will ein LED Board Per USB anschließen und Die ganzen Pictureboxen sollen als vorschau dienen

    Kann mir jeman helfen

    Danke im Vorraus
    Hier gibt es nichts zusehen, bitte gehen sie weiter!

    VB.NET-Quellcode

    1. For Each PictureBox As PictureBox In Controls
    2. PictureBox.BackColor = Color.White
    3. Next

    Wobei man das Ganze noch mit einer TypeOf Abfrage versehen sollte.

    Edit://
    Büddesehr:

    VB.NET-Quellcode

    1. For Each PictureBox As Control In Controls
    2. If TypeOf PictureBox Is PictureBox Then
    3. CType(PictureBox, PictureBox).BackColor = Color.White
    4. End If
    5. Next


    Edit://
    Dennoch wäre es wesentlich sinnvoller wenn dus einfach mit GDI+ zeichnest...

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

    Wobei der obere Code nicht die PictureBoxen anspricht die auf einem anderem Control liegen, falls du welche auf verschieden Controls hast, kannst du es so machen:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. For Each Ctrl As PictureBox In GetControls.OfType(Of PictureBox)()
    3. Ctrl.BackColor = Color.White
    4. Next
    5. End Sub
    6. Private Function GetControls() As List(Of Control)
    7. Dim CtrlList As New List(Of Control)
    8. Dim childlist As New List(Of Control)
    9. For Each Ctrl As Control In Me.Controls
    10. CtrlList.Add(Ctrl)
    11. If Ctrl.HasChildren Then
    12. childlist.Add(Ctrl)
    13. End If
    14. Next
    15. While childlist.Count <> 0
    16. If childlist(0).HasChildren Then
    17. For Each CTRL As Control In childlist(0).Controls
    18. CtrlList.Add(CTRL)
    19. If CTRL.HasChildren Then
    20. For Each CTRL1 As Control In CTRL.Controls
    21. CtrlList.Add(CTRL1)
    22. childlist.Add(CTRL1)
    23. Next
    24. End If
    25. Next
    26. End If
    27. childlist.RemoveAt(0)
    28. End While
    29. Return CtrlList
    30. End Function


    mfG

    Derfuhr
    Falls du (warum auch immer) deine 42(?) Boxen in einem Panel haben solltest:
    (Man gehe davon aus dass dein Panel 'Panel1' benannt wurde)

    VB.NET-Quellcode

    1. For Each pb As PictureBox In Panel1.Controls
    2. pb.BackColor = Color.White
    3. Next


    Das ändert alle Picture boxen die NUR in dem Panel sind.
    Am besten wäre noch eine Abfrage mit CType.
    Natürlich muss es kein Panel sein, kann alles mögliche sein.
    Alle anderen Pictureboxen ausserhalb der Auflistung bleiben beibehalten.

    Meteora

    Derfuhr schrieb:

    kannst du es so machen:


    Etwas schöner imho in VS2012/FW4.5:

    VB.NET-Quellcode

    1. Private Iterator Function GetControls(ByVal CurrentControl As Control, Optional ByVal Depth As Integer = -1) As IEnumerable(Of Control)
    2. For Each ctrl In CurrentControl.Controls.OfType(Of Control)()
    3. Yield ctrl
    4. If Depth <> 0 AndAlso ctrl.Controls.Count > 0 Then
    5. For Each child As Control In GetControls(ctrl, Depth - 1)
    6. Yield child
    7. Next
    8. End If
    9. Next
    10. End Function
    11. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    12. For Each c In GetControls(Me, -1)
    13. Console.WriteLine(c.Name)
    14. Next
    15. End Sub



    PS: Ja, das Grauen ist zurück ;)
    @NXGENMeteora:
    Okey. Wenn er das nicht weiß sollte er sich schleunigst etwas einlesen...