Checkboxen in einem Loop?

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

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

    Checkboxen in einem Loop?

    Hallo
    warum geht die Loop Methode nicht mit Checkboxen?
    Ich frage mehrere Checkboxen ab, kann herausfinden welche gedrückt wurde aber die Controls.Item funtion funktioniert aber nicht wie bei Buttons etc.

    die folgende Zeile funktioniert gut als Button:
    Controls.Item("Button" & i + 30).visible = True

    aber nicht als Controlbox:
    If Controls.Item("CheckBox" & i).checked = True Then MsgBox("true")
    die Funktion .checked, Visible etc. stehen nicht zur Verfügung.

    Wäre cool ich könnte die Checkboxen einfach im Loop abfragen wie Buttons.

    Danke für einen Tip


    Quellcode

    1. Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged, CheckBox2.CheckedChanged, CheckBox3.CheckedChanged, CheckBox4.CheckedChanged
    2. Dim b As CheckBox = DirectCast(sender, CheckBox)
    3. Dim howmuchplayers As Integer = Nothing
    4. For i = 1 To 30
    5. If b.Name = "CheckBox" + Trim(i) Then ..... irgendwas
    6. If Controls.Item("CheckBox" & i).Checked = True Then ..... irgendwas
    7. Next
    8. End sub
    Weil Visible eine Property allgemein von Control ist. Checked hingegen eine CheckBox-Property. Controls ist nunmal allgemein eine Control-Auflistung. Dann nimm vorher alle CheckBoxen der Controls ... wobei Du mit b bereits ne CheckBox hast.
    Ich hoffe, dass der o.g. Code nicht Produktivcode ist. Denn ich sehe in den Zeilen#6-7 inhaltlich keinen Sinn.

    ##########
    z.B.

    VB.NET-Quellcode

    1. For Each Control In Me.Controls.OfType(Of CheckBox)
    2. 'Whatever
    3. Next

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

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

    Danke, das ist mir bekannt. Ich wollte gleich True oder False in eine XML Tabelle schreiben, wenn sich eine bestimmte Checkbox ändert.
    Mit b weiss ich welche Checkbox das ist, aber nicht deren Wert.
    Ich kann alle Checkboxen einzeln auf true abfragen, ich wollte mir aber das in einem loop einfacher machen.
    ich habe 30 Checkboxen neben 30 Namen.

    Quellcode

    1. For i = 1 To 30
    2. If b.Name = "CheckBox" + Trim(i) Then 'sowas wie folgend, ich weiss aber, dass das nicht geht
    3. If Controls.Item("CheckBox" & i).Checked = True Then
    4. Update_data(filename, "Data/Fussball/" + ("checked" + Trim(Str(i))), "True") 'update_data ist meine subroutine um direkt einen bestimmten Wert im XML file zu ändern
    5. else
    6. Update_data(filename, "Data/Fussball/" + ("checked" + Trim(Str(i))), "False")
    7. EndIf
    8. EndIf
    9. Next
    Die Bennenung der CheckBoxen auf diese Weise deutet für mich auf einen Designfehler hin. Davon abgesehen, dass man diese immer richtig benennen sollte.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Den Code mit CE-Namen und somit untypisiert zu halten, sehe ich als unflexibel und stimme Trade voll zu, aber bitte:

    VB.NET-Quellcode

    1. For i = 1 To 30
    2. If TypeOf Controls.Item("CheckBox" & i) IsNot CheckBox Then Continue For
    3. Dim cb = DirectCast(Controls.Item("CheckBox" & i), CheckBox)
    4. Update_Data(filename, "Data/Fussball/" + ("checked" + Trim(Str(i))), cb.Checked.ToString)
    5. Next
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Cool!Funktioniert super. VIELEN DANK.
    Ich kein Programmierer, daher ist mein Code wahrscheindlich unelegant und unflexibel.
    Er muss einfach nur das machen, was er soll und das halt so wie ich kann.

    Ich freue mich sehr, so schnell und unkompliziert Hilfe bekommen zu haben!
    Danke und Gute Zeit
    @tomtom1000 Willkommen im Forum. :thumbup:
    Wie wäre es mit einer CheckedListBox?
    docs.microsoft.com/de-de/dotne…N&view=netframework-4.7.2
    stackoverflow.com/questions/94…et-checkedlistbox-control
    Ansonsten findest Du hier im Forum viele Beiträge dazu.
    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!