21.7 Listen
21.7.1 ListBox
Eine ListBox zeigt eine Liste, in der der Anwender ein oder mehrere Elemente markieren kann. Standardmäßig erlaubt eine ListBox nur eine Einfachauswahl. Setzen Sie die Eigenschaft SelectionMode auf Multiple, können beliebig viele Elemente durch einen einfachen Klick gewählt werden. Bei der Einstellung Extended drückt der Anwender beim Klicken des Listenelements die -Taste für zusammenhängende Bereiche und die -Taste zur Auswahl zusätzlicher einzelner Elemente.
Eine klassische ListBox verwendet für jedes Element die Klasse ListBoxItem.
<ListBox Name="ListBox1"> <ListBoxItem>Peter</ListBoxItem> <ListBoxItem>Franz</ListBoxItem> <ListBoxItem>Rolf</ListBoxItem> <ListBoxItem>Hans-Günther</ListBoxItem> </ListBox>
Statt einer Liste von ListBoxItem-Elementen können Sie auch andere Steuerelemente auflisten. Im folgenden Codefragment sind dies CheckBox-Steuerelemente (siehe Abbildung 21.6). Das Ankreuzen der Kästchen ist unabhängig von der Selektion von Listenelementen (ganze Zeilen).
<ListBox Name="ListBox1"> <CheckBox Name="A" Margin="3">Peter</CheckBox> <CheckBox Name="B" Margin="3">Franz</CheckBox> <CheckBox Name="C" Margin="3">Rolf</CheckBox> <CheckBox Name="D" Margin="3">Hans-Günter</CheckBox> </ListBox>
Abbildung 21.6 Checkboxliste
Sie können der ListBox sowohl im XAML-Code als auch in der Code-Behind-Datei Listenelemente hinzufügen. Die Eigenschaft Items liefert eine Referenz auf die Listenelemente. Durch Aufruf der Methode Add fügen Sie nach Bedarf Elemente hinzu.
Dim chk1 As New CheckBox() chk1.Content = "Beate" chk1.Margin = New Thickness(3) Dim chk2 As New CheckBox() chk2.Content = "Gudrun" chk2.Margin = New Thickness(3) ListBox1.Items.Add(chk1) ListBox1.Items.Add(chk2)
Beachten Sie, dass die Eigenschaft Margin vom Typ Thickness ist.
Zugriff auf ausgewählte Elemente
Das bzw. die ausgewählten Elemente werden in der Regel im Programmcode für weitere Operationen benutzt. Die ListBox hat die in Tabelle 21.5 gezeigten Eigenschaften zum Zugriff auf die Selektion.
Eigenschaft | Beschreibung | |
SelectedIndex |
Index des ersten Elements in der aktuellen Auswahl oder –1 bei leerer Auswahl. Durch Zuweisung wird ein Element selektiert. |
|
SelectedItem |
Erstes Element in der aktuellen Auswahl oder Nothing bei leerer Auswahl |
|
SelectedItems |
Ruft alle ausgewählten Elemente ab. |
R |
Mit der folgenden Zuweisung wird das erste Listenelement selektiert. Geschieht dies während der Programminitialisierung, startet die Anwendung mit dieser Vorselektierung.
ListBox1.SelectedIndex = 0
Um mehrere Elemente der Reihe nach auszuwerten, eignet sich SelectedItems. Sie können die Liste beispielsweise in einer For Each-Schleife durchlaufen.
Private Sub btnShowItem_Click(sender As Object, e As RoutedEventArgs)
Dim items As string = ""
For Each item As ListBoxItemin ListBox1.SelectedItems
items += item.Content & Environment.NewLine
Next
MessageBox.Show(items)
End Sub
21.7.2 ComboBox
Die ComboBox ähnelt einer ListBox mit Einfachauswahl, jedoch zeigt die ComboBox, außer während der Selektion, nur ein Element an und nimmt somit nicht viel Platz in Anspruch.
Mit dem Standardwert False von IsEditable kann der Anwender keine neuen ComboBox-Einträge hinzufügen. Erlauben Sie mit True die Erweiterung, sollten Sie im Programmcode sicherstellen, dass die neuen Elemente nicht »verloren gehen«. Jedes Element in einer ComboBox ist vom Typ ComboBoxItem.
<ComboBox Height="20" Name="comboBox1" Width="120"> <ComboBoxItem>Berlin</ComboBoxItem> <ComboBoxItem>Hamburg</ComboBoxItem> <ComboBoxItem>Bremen</ComboBoxItem> <ComboBoxItem>Düsseldorf</ComboBoxItem> <ComboBoxItem>Dresden</ComboBoxItem> <ComboBoxItem>München</ComboBoxItem> </ComboBox>
Die Eigenschaft Items liefert eine Referenz auf die Einträge in Form einer ItemCollection. Im Programmcode erweitern Sie die ComboBox mit deren Add-Methode.
comboBox1.Items.Add("Stuttgart")
Die textuelle Repräsentation des ausgewählten Elements steht in der Eigenschaft Text. Bei einfachen Einträgen lässt sich mit dieser Eigenschaft auch die Auswahl festlegen. Ohne Einschränkung können Sie mit SelectedIndex den Index des gewünschten Elements angeben.
Zwei Ereignisse sind spezifisch für die ComboBox: DropDownOpened wird beim Öffnen der Liste ausgelöst und DropDownClosed bei deren Schließen.
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.