Mehrere Checkboxen mit einer Schleife aktivieren oder deaktivieren

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von vbmatze.

    Mehrere Checkboxen mit einer Schleife aktivieren oder deaktivieren

    Hallo,

    ich suche nun schon seit Stunden eine möglichkeit mehrere Checkboxen mit einer Schleife zu aktivieren oder deaktivieren sprich Häkchen rein oder nicht rein.
    bei me.contols("checkbox" & i).xxxxx gibt es leider keinen "Punkt" der Value oder Checked abfragt und bei allen anderen sachen die ich so ausprobiert hab (windows.system.form bla.)kann ich die chekboxen nicht in eine klammer schreiben um sie mit i zu verbinden..

    Könnte mir vllt. jemand helfen? Ich hab schon unzählige Suchanfragen gestellt aber keine hat mir eine Lösung aufgezeigt.. mit VBA ging das ganz leicht dort gab es glaub ich den begriff .value oder so aber hier scheint es den nicht zu geben...oder?

    Wäre echt toll, wenn mir jemand helfen könnte, danke!
    me.contols(yyy) gibt ein Control zurück, keine CheckBox. Diese musst Du Dir mit

    VB.NET-Quellcode

    1. Dim cb As CheckBox = DirectCast(me.contols(yyy), CheckBox)
    holen.
    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!
    hallo,
    und erstmal danke für alle antworten!

    die letzte fand ich recht interessant nur würde mich interessieren ob ich nicht anstatt

    VB.NET-Quellcode

    1. for each ck in {checkbox1,checkbox2,checkbox3}
    2. ck.Checked=true next

    eine for each schleife machen kann a lá for each checkbox in ... (und jetzt nur ein begriff(vllt. me.controls oder so)! damit ich nicht alle checkboxen hinschreiben muss...falls ich mal 20 hab..)

    ist einfach eine ganz schlechte Idee.
    nun ja ich find die idee jetzt nicht soo schlecht und ich werde auch gerne deinen weg gehen wenne mir das noch ersparst daß ich nicht alle checkboxen eintippen muss aber mich würde es doch schon interessieren ob es auch so oder so ähnlich geht:

    VB.NET-Quellcode

    1. for i = 1 to x
    2. xxx.xxx("checkbox"&i).xxxx = true

    VB.NET-Quellcode

    1. for each ck in me.controls.ofType(Of Checkbox)
    2. ck.Checked=true
    3. next
    Das geht aber nur, wenn auch alle Checkboxen in me.controls drinne sind. Sind welche etwa in einer Groupbox in me.controls, so wird eine rekursive Suche fällig.

    Aber üblicherweise will man nicht blindlings alle Checkboxen checken, sondern schon bestimmte welche.

    Und 20 Checkboxen ist sicherlich ein Design-Fehler.

    Hast du viele Daten, nimm ein ListenControl, nicht viele Einzelcontrols.
    vorzugsweise DatagridView.

    ErfinderDesRades schrieb:

    Das geht aber nur, wenn auch alle Checkboxen in me.controls drinne sind. Sind welche etwa in einer Groupbox in me.controls, so wird eine rekursive Suche fällig.

    Aber üblicherweise will man nicht blindlings alle Checkboxen checken, sondern schon bestimmte welche.

    Und 20 Checkboxen ist sicherlich ein Design-Fehler.

    Hast du viele Daten, nimm ein ListenControl, nicht viele Einzelcontrols.
    vorzugsweise DatagridView.
    das sagt mir jetzt alles nichts aber danke für deine antwort!

    jou, du hast wohl recht 20 checkboxen sind absolut übel aber (zu meiner verteidigung) ich wollte einem kollegen helfen der sich da was programmiert hat und er hat wirklich jede checkbox und jedes label etc. (vor allem wenn mit allen das Gleiche passiert) einzeln angesprochen (15 chkb und ca. 60 labels)...
    ich sagte ihm man kann das "etwas" kürzen nur leider wusste ich nicht genau mit welchem befehl da ich eigentlich ausschließlich mit einer älteren vba version arbeite...
    jetzt hab ich mir die VB2010er zum spielen mal besorgt.. :)

    Danke für die schnelle Hilfe! :thumbsup:

    ErfinderDesRades schrieb:


    Aber üblicherweise will man nicht blindlings alle Checkboxen checken, sondern schon bestimmte welche.

    ....
    Hast du viele Daten, nimm ein ListenControl, nicht viele Einzelcontrols.
    vorzugsweise DatagridView.
    noch eine kleine frage... bei meiner ersten erdachten lösung also mit for i = x to X und dann die beispielsweise checkbox +i hätte ich ja die möglichkeit auch bestimmte checkboxen anzusprechen, heißt z.B. 10 -20 etc. was ich natürlich mit for each nicht kann..
    was wäre denn die lösung für solch ein problem? ich kann mir irgendwie nicht vorstellen das ich mit vba dieses realisieren kann aber mit dem 2010 VB nicht.... ?(

    Edit by der_Kurt:
    keine Doppelposts, es gibt eine Bearbeiten-Funktion

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

    ui, das sieht aber kompliziert aus... ich hoffe versteh das irgendwann mal... ;)
    könnteste mir nicht einen kleinen code fetzen für zwei labels oder checkboxen posten.. irgendwie ist diese flut an informationen in deinem link für mich anfänger mom. zu viel...
    trotzdem danke für den link!

    Noch eine kleine Verständnisfrage..Wieso muss ich nachdem ich z.b. for each checkbox in me.controls noch oftype(checkbox) angeben wenn ich doch schon gesagt habe das er jede checkbox nehmen soll(for each checkbox...)l? Ich hoffe ihr versteht meine Frage... ;(


    @der_Kurt
    Sorry für den Doppelpost! Ich weiß, dass man sowas nicht macht und normalerweise mach ich sowas auch nicht, nur in dem Fall war die Gefahr gegeben, dass das nicht mehr gelesen worden wäre...sorry!

    Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „dw.katze“ ()

    Mehrere CheckBoxen deaktivieren

    Hallöchen liebe VB-Profis.







    Habe ein ähnliches Problem, vieles ausprobiert und doch keine Lösung gefunden. Ich hoffe ihr könnt mir weiter helfen.







    Zur Situation: Ich habe ein Windowsform mit mehreren GroupBoxen und auf einer dieser GroupBoxen sind mehrere CheckBoxen untergebracht. Ich möchte nun, wenn der Benutzer auf einen Button drückt die CheckBoxen "ungechekt" werden. (Also Haken raus)







    Dazu habe ich folgende Sub geschrieben:







    VB.NET-Quellcode

    1. Private Sub neu()
    2. For i As Integer = 0 To DataGridView1.RowCount - 1
    3. DataGridView1.Rows.Clear()
    4. Next i
    5. For Each el As Control In Me.GroupBox1.Controls
    6. If TypeOf (el) Is CheckBox Then
    7. Dim cb As CheckBox = DirectCast(el, CheckBox)
    8. If (cb.Checked = True) Then
    9. cb.Checked = False
    10. End If
    11. End If
    12. Next el
    13. NUDap.Value = 1
    14. NUDaz.Value = 1
    15. End Sub




    Problem: Alles funktioniert nur bei den CheckBoxen tut sich nichts. Gesetzte Haken bleiben da, der Rest klappt aber.







    LG vbmatze
    -----------------------------------------------------------------------------------------------------------------------
    Hat sich erledigt, hatte ne 2.Form die ich mit Copy&Paste gefüllt hab, damit kam er wohl nicht klar. Hab diese dann gelöscht- jetzt funnzt alles so wie es soll.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „vbmatze“ ()