Aktion für mehrere Objekte

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von ~blaze~.

    Aktion für mehrere Objekte

    Hallo Leute,

    jetzt stelle ich eine Frage für die ich mich fast schon schäme.
    Nehmen wir an, ich habe 10 Checkboxen und möchte ein Button
    Check/Uncheck all einfügen. Gibt es einen smarteren weg als das:

    Checkbox1.checked = True
    Checkbox2.checked = True
    .....

    Sozusagen das man Checkbox 1 - 10 mit einmal True setzt.
    Habe mich schon durch google/msdn geschlagen aber nix gefunden.

    MFG

    Synaptic schrieb:

    Funktioniert bei meinem Vorhaben so leider nicht.

    Warum nicht?
    Das klappt auch wenn sie in ner Form sind, Tabpage etc. Oder man sprcht sie mit "Namen" an ...Controls("CheckBox" & i.ToString()).
    Allerdings geht obiger code nur, wenn NUR Checkboxen in ...Controls sind, anderfalls muss man "As Control" machen und auf Checkbox casten
    du kannst alle in einen array/liste schreiben
    z.b.

    VB.NET-Quellcode

    1. Dim a As List(Of Checkbox)
    2. Sub Formload(sender As Object, e As EventArgs)
    3. a=New List(Of Checkbox)
    4. a.add(Checkbox1)
    5. a.add(Checkbox2)
    6. End Sub
    7. Sub btnClick() Handles Button1.Click
    8. for each c As Checkbox in a
    9. C.checked=true
    10. Next
    11. End Sub
    Im Array hab ich ja wieder das Problem das ich tzd alle Objektnamen in das Array schreiben muss ^^
    Die Checkboxen liegen mit Labels, Textboxen ect auf einer Ebene.
    Als ich versucht hatte, die checkboxen über Controls anzusprechen, wollte mein Programm auch
    die Labels / Textboxen checken.

    ;MFG
    So müsste es doch eigentlich Funktionieren:


    VB.NET-Quellcode

    1. Dim CB As CheckBox For Each CB In Panel1.Controls CB.Checked = True Next


    Aber ich erhalte immer den Fehler das Windows.FOrms.Button nicht in Checkbox KONVERTIERT werden kann.
    Ich definiere CB doch als Checkbox, also sollte er für jeden CB(Als Checkbox) den Wert True setzen e_e

    Okay Habs:


    Dim CB As Object
    For Each CB In Panel1.Controls
    If TypeOf CB Is CheckBox Then
    CB.Checked = True
    End If
    Next

    Danke.
    Hi
    Das Problem ist, dass Controls nicht nur CheckBoxen auflistet, sondern ALLE Controls. Deshalb musst du

    VB.NET-Quellcode

    1. For each c As Control in Panel1.Controls
    2. if Typeof c is CheckBox Then
    3. Dim cb As CheckBox = DirectCast(c, CheckBox)
    4. cb.Checked = True 'Mach was mit cb
    5. End if
    6. Next


    machen.

    picoflop hat dir dazu eigentlich die Anleitung bereits gegeben.

    Gruß
    ~blaze~