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

  • Anchor – (Top, Left)
    Verhalten bei Größenänderung

BackColor – SystemColors.Window
Hintergrundfarbe

BorderStyle – Fixed3D
Rahmenstil (None, FixedSingle, Fixed3D)

CheckOnClick$false
Checkbox wird direkt beim Klick geändert (ohne zweiten Klick)

Dock – None
Layout im Container

Enabled$true
Aktiv / deaktiviert

Font – Standard-Systemfont
Schriftart

ForeColor – SystemColors.WindowText
Textfarbe

FormattingEnabled$true
Für komplexe Objekte

SelectionMode

One
Auswahlmodus (meist irrelevant hier)

HorizontalScrollbarSorted$false
HorizontaleAutomatisch Scrollbar sortieren

Location – (0,0)
Position

Name – ""
Interner Name

ScrollAlwaysVisible – $false
Scrollbar immer anzeigen

TabIndex – 0
Tab-Reihenfolge

TabStop – $true
Fokus per Tab

ThreeDCheckBoxes$false
3D-Darstellung der Checkboxen

TopIndexScrollAlwaysVisible0$false
OberstesScrollbar sichtbaresimmer Item

anzeigen HorizontalScrollbar

$false
Horizontale Scrollbar

VisibleTabStop$true
SichtbarkeitFokus per Tab

ItemsDaten / 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!)

  • SelectionModeTabIndexOne0
    Auswahlmodus (meist irrelevant hier)

Sorted – $false
Automatisch sortieren

Tab-Reihenfolge

GrößeLayout & Position

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

Aussehen (Appearance)

    BackColor – SystemColors.Window
    Hintergrundfarbe ForeColor – SystemColors.WindowText
    Textfarbe Font – Standard-Systemfont
    Schriftart BorderStyle – Fixed3D
    Rahmenstil (None, FixedSingle, Fixed3D) Visible – $true
    Sichtbarkeit

    Meta / System

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

       


      Größe

      Die CheckedListBox**CheckedListBox** ist im Grunde eine ListBox mit eingebauten Checkboxen.
       Klingt simpel… ist aber genau da tückisch.


      # 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

      Das ist DER Klassiker, der dir später Logik zerschießt.


      Events - CheckedListBox

      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

      $clb.CheckOnClick = $true
      

      👉 Sonst brauchst du zwei Klicks. Und der User denkt, dein UI ist kaputt.


      🧩 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