Skip to main content

CheckedListBox

Namespace: System.Windows.Forms

Properties / Eigenschaften
  • Property – Standardwert
    Beschreibung oder Erläuterung der Eigenschaft

Verhalten (Behavior)

  • AllowDrop$false
    Drag & Drop erlauben
  • CheckOnClick$false
    Checkbox wird direkt beim Klick geändert (ohne zweiten Klick)
  • Enabled$true
    Aktiv / deaktiviert
  • FormattingEnabled$true
    Für komplexe Objekte
  • SelectionModeOne
    Auswahlmodus (meist irrelevant hier)
  • Sorted$false
    Automatisch sortieren
  • ThreeDCheckBoxes$false
    3D-Darstellung der Checkboxen
  • ScrollAlwaysVisible$false
    Scrollbar immer anzeigen
  • HorizontalScrollbar$false
    Horizontale Scrollbar
  • TabStop$true
    Fokus per Tab

Daten / Inhalt (Data)

  • Items(leer)
    Alle Einträge
  • CheckedItems(leer)
    Alle aktiv angehakten Items
  • CheckedIndices(leer)
    Indizes der angehakten Items
  • SelectedItem$null
    Aktuell markiertes Item (nicht gleich checked!)
  • TabIndex – 0
    Tab-Reihenfolge

Layout & Position

  • Location(0,0)
    Position
  • Size(Width=120, Height=96)
  • Width(abhängig vom Layout)
  • Height(abhängig vom Layout)
  • Anchor(Top, Left)
    Verhalten bei Größenänderung
  • DockNone
    Layout im Container
  • ItemHeight(abhängig von Font)

Aussehen (Appearance)

  • BackColorSystemColors.Window
    Hintergrundfarbe
  • ForeColorSystemColors.WindowText
    Textfarbe
  • FontStandard-Systemfont
    Schriftart
  • BorderStyleFixed3D
    Rahmenstil (None, FixedSingle, Fixed3D)
  • Visible$true
    Sichtbarkeit

Meta / System

  • Name""
    Interner Name
  • TopIndex – 0
    Oberstes sichtbares Item


Größe

Die CheckedListBox ist im Grunde eine ListBox mit eingebauten Checkboxen. 

CheckedListBox erstellen

$clb = New-Object System.Windows.Forms.CheckedListBox
$clbNew = [System.Windows.Forms.CheckedListBox]::new()

Items hinzufügen

$clb.Items.Add("Apfel")
$clb.Items.Add("Banane")
$clb.Items.AddRange(@("Orange","Mango","Traube"))

📥 Werte auslesen

# Alle angehakten Items
$checked = $clb.CheckedItems

# Indizes
$indices = $clb.CheckedIndices

# Einzelnes Item (nur Fokus, nicht Check!)
$selected = $clb.SelectedItem

👉 Wichtiger Unterschied:
SelectedItemCheckedItems

  • SelectedItem betrifft nur das Item, welches Ausgewählt ist.
  • CheckedItems beinhaltet alle Items welches auch einen Haken haben

Events - CheckedListBox

Events
    Event
    Wird ausgelöst, ...
      TextChanged
      ... wenn sich die Text-Eigenschaft des Controls ändert
      Interaktion

        Click
        ... wenn ein Eintrag der Liste angeklickt wird

        DoubleClick
        ... wenn ein Eintrag doppelt angeklickt wird

        ItemCheck
        ... wenn sich der Checked-Zustand eines Items ändert (bevor die Änderung übernommen wird) SelectedIndexChanged
        ... wenn sich die Auswahl (markiertes Item) ändert
        Maus

          MouseEnter
          ... wenn der Mauszeiger die CheckedListBox betritt

          MouseLeave
          ... wenn der Mauszeiger die CheckedListBox verlässt

          MouseMove
          ... wenn der Mauszeiger innerhalb der CheckedListBox bewegt wird

          MouseDown
          ... wenn eine Maustaste auf der CheckedListBox gedrückt wird

          MouseUp
          ... wenn eine Maustaste auf der CheckedListBox losgelassen wird

          MouseHover
          ... wenn der Mauszeiger für kurze Zeit auf der CheckedListBox verweilt

          Tastatur
            KeyDown
            ... wenn eine Taste gedrückt wird, während die CheckedListBox den Fokus hat KeyUp 
            ... wenn eine gedrückte Taste wieder losgelassen wird KeyPress 
            ... wenn eine Taste gedrückt wird, die ein Zeichen erzeugt (z. B. Buchstaben, Zahlen)
            Fokus
              Enter
              ... wenn das Control Fokus erhält Leave 
              ... wenn das Control Fokus verliert
              Darstellung / Layout

                Paint
                ... wenn die CheckedLisBox neu gezeichnet wird

                LocationChanged
                ... wenn sich die Position der CheckedListBox ändert SizeChanged
                ... wenn sich die Größe der CheckedListBox ändert
                Zustand

                  EnabledChanged
                  ... wenn sich der Enabled-Status der CheckedListBox ändert

                  VisibleChanged
                  ... wenn sich die Sichtbarkeit der CheckedListBox ändert

                  Aussehen

                    FontChanged
                    ... wenn sich die Schriftart der CheckedListBox ändert

                    ForeColorChanged
                    ... wenn sich die Textfarbe der CheckedListBox ändert

                    BackColorChanged
                    ... wenn sich die Hintergrundfarbe der CheckedListBox ändert

                    Datenbindung
                      DataSourceChanged
                      ... wenn sich die Datenquelle ändert DisplayMemberChanged
                      ... wenn sich die Anzeigebindung ändert ValueMemberChanged
                      ... wenn sich die Wertbindung ändert

                      ItemCheck

                      Wird ausgelöst, wenn ein Item gecheckt / ungecheckt wird.
                      Aber: Zustand ist noch nicht final!

                      $clb.Add_ItemCheck({
                      param($sender, $e)
                      
                      Write-Host "Index:" $e.Index
                      Write-Host "Neu:" $e.NewValue
                      })
                      

                      👉 Wenn du hier $clb.CheckedItems liest, bekommst du den alten Zustand.

                      SelectedIndexChanged

                      Nur Fokus geändert, nicht der Check.

                      $clb.Add_SelectedIndexChanged({
                      Write-Host "Markiert:" $clb.SelectedItem
                      })
                      

                      Click

                      Feuert bei jedem Klick

                      $clb.Add_Click({
                      Write-Host "Click erkannt"
                      })
                      

                      Tipps & Tricks - CheckedListBox

                      Check direkt beim Klick

                      $checkListBox.CheckOnClick = $true

                      Alle gesetzten Werte holen

                      $clb.CheckedItems | ForEach-Object {
                      $_
                      }
                      

                      🧩 Check programmatisch setzen

                      $clb.SetItemChecked(0, $true)
                      

                      ⚠️ Typische Stolperfallen

                      • SelectedItem benutzt statt CheckedItems
                      • ItemCheck falsch verstanden (Timing!)
                      • Doppel-Events durch Click + ItemCheck
                      • CheckOnClick = $false → wirkt wie Bug

                      🧩 Mentales Modell

                      Die CheckedListBox hat zwei Zustände gleichzeitig:

                      1. Fokus (SelectedItem)
                      2. Check-Zustand (CheckedItems)

                      Wenn du das vermischst → Chaos.

                      🧩 Best Practice

                      • Für mehrere unabhängige Optionen → perfekt
                      • Für „eine Auswahl“ → falsches Control
                      • Für komplexe Daten → lieber eigene UI bauen