Visual Basic - Checkbox Auswahl begrenzen und restliche unchecked boxen deaktivieren
Hallo,
ich habe in meinem Programm Checkbox1 bis Checkbox63. Diese sind unterteilt in 3 Bereiche - Jeweils 21 Boxen in einer Gruppe (händisch gruppiert ohne Groupbox!)
Eine Gruppierung durch eine Groupbox ist nicht möglich, da die Checkboxen in eine Picturebox eingearbeitet sind. (Oder ist es doch noch möglich ohne die Grafik in dem Bereich zu beinflussen?)
In jeder Gruppe wird bereits erfasst wie viele Boxen angeklickt wurden.
Jetzt möchte ich aber die Auswahl an Checkboxen auf einen Maximalwert begrenzen und bei erreichen des Maximalwerts sollen alle Checkboxen die den Status "unchecked" haben deaktiviert bzw. für den Benutzer nicht mehr anwählbar sein.
Dafür müsste ich ja dann erst einmal prüfen welche Checkboxen aktiv und welche inaktiv sind.
Googel hat mir da bisher nicht wirklich weiterhelfen können.
Ich bräuchte jetzt Hilfe den Code dafür zu erstellen.
Wäre dies hier eine Möglichkeit?
if Checkboxgroup1 = 5 and Checkbox1.unchecked then
CheckBox1.CanSelect = False
End If
Oder gibt es eine Einfachere Methode per Array?
Vielen Dank im Voraus!
ich habe in meinem Programm Checkbox1 bis Checkbox63. Diese sind unterteilt in 3 Bereiche - Jeweils 21 Boxen in einer Gruppe (händisch gruppiert ohne Groupbox!)
Eine Gruppierung durch eine Groupbox ist nicht möglich, da die Checkboxen in eine Picturebox eingearbeitet sind. (Oder ist es doch noch möglich ohne die Grafik in dem Bereich zu beinflussen?)
In jeder Gruppe wird bereits erfasst wie viele Boxen angeklickt wurden.
Jetzt möchte ich aber die Auswahl an Checkboxen auf einen Maximalwert begrenzen und bei erreichen des Maximalwerts sollen alle Checkboxen die den Status "unchecked" haben deaktiviert bzw. für den Benutzer nicht mehr anwählbar sein.
Dafür müsste ich ja dann erst einmal prüfen welche Checkboxen aktiv und welche inaktiv sind.
Googel hat mir da bisher nicht wirklich weiterhelfen können.
Ich bräuchte jetzt Hilfe den Code dafür zu erstellen.
Wäre dies hier eine Möglichkeit?
if Checkboxgroup1 = 5 and Checkbox1.unchecked then
CheckBox1.CanSelect = False
End If
Oder gibt es eine Einfachere Methode per Array?
Vielen Dank im Voraus!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 254025
Url: https://administrator.de/forum/visual-basic-checkbox-auswahl-begrenzen-und-restliche-unchecked-boxen-deaktivieren-254025.html
Ausgedruckt am: 05.05.2025 um 06:05 Uhr
2 Kommentare
Neuester Kommentar
Hallo Kurdirektor,
Am einfachsten ist es die Controls alle in eine GroupBox zu stecken, ich sehe nicht wo hier dein Problem ist.
Dann lassen sich die Controls über die Controls-Eigenschaft iterieren und jeweils prüfen ob sie deaktiviert werden müssen oder nicht.
Als Alternative kannst du den Checkboxen auch in der Eigenschaft Tag ein Gruppentag zuweisen welches du mit einer Schleife über alle Controls in der Form prüfst und dann jeweils deine Aktion an den Checkboxen vornimmst.
Beispiel mit Tags an den Checkboxen:
Falls dir das nicht klar sein sollte, hier eine komplette Demo als Visual Studio 2010 Projekt zum Download.
Grüße Uwe
Eine Gruppierung durch eine Groupbox ist nicht möglich, da die Checkboxen in eine Picturebox eingearbeitet sind. (Oder ist es doch noch möglich ohne die Grafik in dem Bereich zu beinflussen?)
erklär mal bitte wie du eine Checkbox in eine PictureBox "eingearbeitet" hast ??? wie soll das bitte gehen ?Am einfachsten ist es die Controls alle in eine GroupBox zu stecken, ich sehe nicht wo hier dein Problem ist.
Dann lassen sich die Controls über die Controls-Eigenschaft iterieren und jeweils prüfen ob sie deaktiviert werden müssen oder nicht.
Als Alternative kannst du den Checkboxen auch in der Eigenschaft Tag ein Gruppentag zuweisen welches du mit einer Schleife über alle Controls in der Form prüfst und dann jeweils deine Aktion an den Checkboxen vornimmst.
Beispiel mit Tags an den Checkboxen:
Sub checkGroup1()
Dim action As Boolean
'dein Maximalwert prüfen (die Variable 'counter' enthält deine gezählte Anzahl aktivierten Checkboxen)
If counter >= 20 Then
action = False
Else
action = True
End If
For Each c As Control In Me.Controls
If TypeOf c Is CheckBox Then
'Wenn das Tag der Checkbox 'Group1' lautet
If c.Tag = "Group1" Then
Dim cb = CType(c, CheckBox)
If cb.Checked = False Then
cb.Enabled = action
End If
End If
End If
Next
End Sub
Falls dir das nicht klar sein sollte, hier eine komplette Demo als Visual Studio 2010 Projekt zum Download.
Grüße Uwe