Skip to main content

ListBox

Die ListBox ist eines dieser Controls, die simpel wirken, aber erstaunlich schnell chaotisch werden, wenn man sie nicht im Griff hat. Im Kern zeigt sie eine Liste von Einträgen an, aus denen der Benutzer auswählen kann.


🧱 Grundlegendes Beispiel

Image

Image

Image

Image

# ListBox erstellen
$listBox = New-Object System.Windows.Forms.ListBox

# Größe & Position
$listBox.Size = New-Object System.Drawing.Size(200,150)
$listBox.Location = New-Object System.Drawing.Point(10,10)

# Items hinzufügen
$listBox.Items.Add("Apfel")
$listBox.Items.Add("Banane")
$listBox.Items.Add("Kirsche")

# Mehrere auf einmal
$listBox.Items.AddRange(@("Orange","Mango","Traube"))

⚙️ Wichtige Eigenschaften

EigenschaftBeschreibungStandard
ItemsEnthält alle Einträgeleer
SelectedItemAktuell ausgewähltes Element$null
SelectedIndexIndex des gewählten Elements-1
SelectionModeAuswahlmodusOne
SortedSortiert automatischFalse
MultiColumnMehrspaltige DarstellungFalse
HorizontalScrollbarScrollbar aktivierenFalse

🎯 SelectionMode Optionen

Die ListBox kann mehr als nur „eins auswählen“ – auch wenn 80 % der Leute das nie checken.

ModusVerhalten
OneNur ein Eintrag
MultiSimpleMehrere ohne STRG
MultiExtendedMehrere mit STRG/SHIFT
$listBox.SelectionMode = "MultiExtended"

📥 Werte auslesen

# Einzelne Auswahl
$selected = $listBox.SelectedItem

# Index
$index = $listBox.SelectedIndex

# Mehrere auswählen
$selectedItems = $listBox.SelectedItems

🧠 Events (hier passiert die Musik)

Image

Image

Image

Image

SelectedIndexChanged

Wird ausgelöst, sobald sich die Auswahl ändert.

$listBox.Add_SelectedIndexChanged({
    Write-Host "Ausgewählt:" $listBox.SelectedItem
})

➕ Items verwalten

# Entfernen
$listBox.Items.Remove("Apfel")

# Alles löschen
$listBox.Items.Clear()

# Einfügen an Position
$listBox.Items.Insert(0, "Neu")

🎨 Nützliche Tricks

Automatisch sortieren

$listBox.Sorted = $true

Mehrspaltig anzeigen

$listBox.MultiColumn = $true

Scrollbar erzwingen

$listBox.HorizontalScrollbar = $true

⚠️ Typische Stolperfallen

  • SelectedItem ist $null, wenn nichts gewählt ist → obvious, aber wird ständig vergessen

  • SelectedItems ist kein Array, sondern Collection → verhält sich leicht anders

  • Bei MultiExtended: Benutzer müssen STRG drücken → sonst denkt jeder, dein UI ist kaputt

  • Items.AddRange() erwartet ein Array → kein wild zusammengebauter String-Müll


🧩 Best Practice

  • Für einfache Auswahl → ListBox

  • Für strukturierte Daten → ListView (sonst wird’s hässlich)

  • Für kleine Auswahl → lieber ComboBox


Ich greif einen Punkt raus, den du wahrscheinlich unterschätzt:

Was speicherst du eigentlich in der ListBox? Strings oder Objekte?

Wenn du nur Strings reinwirfst, verbaust du dir später jede sinnvolle Logik.
Pack lieber direkt Objekte rein:

$listBox.Items.Add([PSCustomObject]@{
    Name = "Chrome"
    Version = "123"
})

Und dann:

$listBox.DisplayMember = "Name"

Das ist der Unterschied zwischen „funktioniert irgendwie“ und „ich hab Kontrolle über meinen Code“.

Das ist so ein klassischer Punkt, wo Leute sich später selbst hassen, weil sie am Anfang “einfach schnell Strings genommen haben”.