CheckBox
Namespace: System.Windows.Forms
Eigenschaften / Propertys
-
Property – Standardwert
Beschreibung oder Erläuterung der Eigenschaft
-
Appearance – Normal
Darstellung der CheckBoxNormal= klassische CheckboxButton= verhält sich wie ein Toggle-Button -
AutoCheck – $true
Ob die CheckBox ihren Zustand automatisch selbst ändert -
Checked – $false
Ob die CheckBox aktiviert ist -
CheckState – Unchecked
Zustand der CheckBox
(Unchecked,Checked,Indeterminate) -
ThreeState – $false
Erlaubt dritten Zustand (Indeterminate) -
Text – ""
Angezeigter Text neben der Checkbox -
TextAlign – MiddleLeft
Ausrichtung des Textes -
CheckAlign – MiddleLeft
Position des Häkchens -
FlatStyle – Standard
Darstellung der Checkbox
(Standard,Flat,Popup,System) -
AutoSize – $false
Passt Größe automatisch an Inhalt an -
Enabled – $true
Aktiviert oder deaktiviert die CheckBox -
Visible – $true
Sichtbarkeit der CheckBox -
Font – Standard-Systemfont
Schriftart des Textes -
ForeColor – ControlText
Textfarbe -
BackColor – Transparent
Hintergrundfarbe -
Dock – None
Docking innerhalb des Containers -
Anchor – (Top, Left)
Verhalten bei Größenänderung des Containers -
Location – (0,0)
Position innerhalb des Containers -
Size – (104,24 ungefähr)
Größe der CheckBox -
TabIndex – 0
Reihenfolge beim Durchtabben -
TabStop – $true
Ob die CheckBox per TAB erreichbar ist
Die CheckBox gehört zu diesen Controls, die harmlos aussehen… bis man plötzlich merkt, dass daran halbe UI-Logik hängt.
Denn technisch gesehen ist sie nicht einfach nur „an oder aus“.
Sie ist oft ein kleiner Schalter für:
-
Einstellungen
-
Features
-
Berechtigungen
-
Optionen
-
Dynamisches UI-Verhalten
Und plötzlich hängt daran alles. Willkommen im Club menschlicher Selbstüberschätzung.
# CheckBox erstellen
$checkBox = New-Object System.Windows.Forms.CheckBox
$checkBoxNew = [System.Windows.Forms.CheckBox]::new()
# Text
$checkBox.Text = "Dark Mode aktivieren"
# Position & Größe
$checkBox.Location = New-Object System.Drawing.Point(10,10)
$checkBox.AutoSize = $true
# Standardmäßig aktiv
$checkBox.Checked = $true
📥 Werte auslesen
# Aktiviert?
$state = $checkBox.Checked
# Exakter Zustand
$checkState = $checkBox.CheckState
-
Event – Hinweistext
Auslöser / Trigger dieses Events
-
CheckedChanged
Wird ausgelöst, sobald sichCheckedändert -
CheckStateChanged
Feuert bei Änderung vonCheckState
-
Click
Wird bei jedem Klick ausgelöst -
DoubleClick
Feuert beim Doppelklick -
MouseDown
Feuert vorClick -
MouseUp
Feuert nachClick
-
KeyDown
Taste wird gedrückt -
KeyUp
Taste wird losgelassen
Events - CheckBox
✅ CheckedChanged
Das wichtigste Event der ganzen CheckBox.
Wird ausgelöst, sobald sich der Zustand ändert.
$checkBox.Add_CheckedChanged({
Write-Host "CheckBox Zustand:" $checkBox.Checked
})
👉 Das ist normalerweise das Event, das du wirklich willst.
Nicht Click.
Nicht MouseDown.
Nicht irgendwelche kreativen Konstruktionen aus emotionalem Kontrollverlust.
🔁 CheckStateChanged
Ähnlich wie CheckedChanged, aber für CheckState.
Relevant bei ThreeState.
$checkBox.ThreeState = $true
$checkBox.Add_CheckStateChanged({
Write-Host "State:" $checkBox.CheckState
})
👉 Ohne ThreeState bringt dir das meistens exakt gar nichts.
🖱️ Click
Feuert bei jedem Klick auf die CheckBox.
$checkBox.Add_Click({
Write-Host "CheckBox wurde geklickt"
})
Das Problem:
Click bedeutet nicht automatisch, dass sich der Zustand geändert hat.
Das vergessen Leute ständig und bauen dadurch doppelte Logik.
⌨️ KeyDown
Für Tastatursteuerung.
$checkBox.Add_KeyDown({
Write-Host $_.KeyCode
})
👉 Viele vergessen komplett, dass Benutzer auch Tastaturen besitzen. Faszinierende gesellschaftliche Entwicklung eigentlich.
🧩 ThreeState
Normalerweise kennt eine CheckBox nur:
Checked
Unchecked
Mit ThreeState kommt hinzu:
Indeterminate
Beispiel:
$checkBox.ThreeState = $true
$checkBox.CheckState = "Indeterminate"
Das nutzt man oft für:
-
Teilweise ausgewählt
-
Gemischte Zustände
-
„Nicht eindeutig“
Klassisches Beispiel:
Ordner-Auswahl mit Unterelementen
Einige aktiviert → graues Kästchen
🎨 Appearance = Button
Das hier kennen überraschend viele nicht:
$checkBox.Appearance = "Button"
Dann wird aus der CheckBox ein Toggle-Button.
$checkBox.Text = "Musik aktivieren"
$checkBox.Appearance = "Button"
👉 Sehr praktisch für moderne UI-Schalter.
Und ja, technisch bleibt es trotzdem einfach nur eine CheckBox im Kostüm. Menschen machen das übrigens auch ständig.
⚠️ Typische Stolperfallen
-
CheckedChangedfeuert auch bei Änderungen per Code
$checkBox.Checked = $true
→ Event wird trotzdem ausgelöst
-
ClickundCheckedChangedgleichzeitig nutzen
→ doppelte Ausführung
-
ThreeStateaktiviert, aber nurCheckedgeprüft
if ($checkBox.Checked)
→ ignoriert Indeterminate
-
AutoCheck = $false
Dann ändert die CheckBox ihren Zustand nicht selbst.
$checkBox.AutoCheck = $false
👉 Ab da bist du verantwortlich.
Glückwunsch. Du bist offiziell der Zustand-Manager deines kleinen Universums.
🧩 Best Practice
-
Für einfache Optionen →
CheckBox -
Für Ein/Aus-Schalter →
Appearance = Button -
Für mehrere zusammenhängende Optionen →
GroupBox -
Für „eine von vielen“ → eher
RadioButton
Ich greif einen Punkt raus, den viele komplett unterschätzen:
Eine CheckBox ist kein Datenspeicher. Sie ist nur UI.
Das hier:
if ($checkBox.Checked)
…ist kein „Systemzustand“.
Das ist nur die aktuelle Anzeige im Interface.
Wenn deine komplette Logik davon abhängt, ob irgendein Kästchen gerade angehakt ist, endet dein Projekt irgendwann wie ein Keller voller Verlängerungskabel. Funktioniert irgendwie. Bis jemand dagegen tritt.