12.11 Kombinationslistenfelder (ComboBox)
Das Kombinationslistenfeld wird durch die Klasse ComboBox beschrieben. Comboboxen lassen drei Darstellungsarten zu, die von der Eigenschaft DropDownStyle kontrolliert werden. Die Eigenschaft DropDownStyle hat den Typ der Enumeration ComboBoxStyle, deren Werte Tabelle 12.9 auflistet.
Konstante | Beschreibung |
Simple |
Das Kombinationslistenfeld wird wie eine Listbox angezeigt. Das Textfeld über der Liste kann editiert werden. |
DropDown |
Um die Liste zu zeigen, muss der Anwender auf die Schaltfläche klicken. Das angezeigte Feld kann editiert werden. |
DropDownList |
Um die Liste zu zeigen, muss der Anwender auf die Schaltfläche klicken. Das angezeigte Feld kann nicht editiert werden. |
Wenn Sie eine Combobox aus der Toolbox in Ihr Formular ziehen, hat die Eigenschaft DropDownStyle die Einstellung DropDown. Der im Feld angezeigte Inhalt kann editiert werden.
Öffnet sich die Dropdown-Liste, werden standardmäßig acht Elemente angezeigt. Ist die Liste länger, kann mit Bildlaufleisten durch die Liste navigiert werden. Mit der Eigenschaft MaxDropDownItems kann die angezeigte Anzahl zwischen 1 und 100 verändert werden. Ähnlich präsentiert sich auch ein Kombinationslistenfeld mit ComboBoxStyle.DropDownList. Allerdings ist mit dieser Einstellung das Textfeld über der Liste nicht editierbar.
ComboBoxStyle.Simple wird in der Praxis seltener eingesetzt. Mit dieser Einstellung zeigt das Steuerelement keine Pfeilschaltfläche. Die Combobox sieht dann wie eine Textbox aus, unter der ein Listenfeld angehängt ist. Das in der Liste ausgewählte Element wird im Textbereich angezeigt. Über die Size-Eigenschaft kann die Höhe und somit auch die Anzahl der angezeigten Listenelemente beeinflusst werden.
Eine Combobox ähnelt einer Listbox mit einfacher Auswahl – nicht nur hinsichtlich der Funktionalität, auch die Programmierung unterscheidet sich nur unwesentlich. Wie eine Listbox weist auch eine Combobox die Eigenschaft Items auf, die eine Referenz auf die Auflistung ComboBox.ObjectCollection bereitstellt, in der alle Listenelemente der Combobox verwaltet werden. Auf die Referenz der ObjectCollection können die üblichen Methoden aufgerufen werden (Add, Remove usw.). Außerdem wird eine Eigenschaft DataSource zum Füllen einer Combobox mit dem Inhalt eines IList-Objekts angeboten (siehe dazu auch Abschnitt 12.9.7, »Auswahlliste mit Datenquelle (DataSource)«).
Zwei Eigenschaften der Combobox geben den Index und die Referenz des ausgewählten Elements aus der Auflistung ComboBox.ObjectCollection zurück: SelectedIndex und SelectedItem. Die erste liefert den Index des ausgewählten Elements, die zweite die Referenz auf das Listenelement.
Wenn Sie eine Combobox während des Ladens der Form mit Daten füllen, wird das Textfenster der Combobox bei der ersten Anzeige der Form kein Listenelement anzeigen. Sie sollten deshalb mit SelectedIndex oder SelectedItem sofort ein Listenelement anzeigen lassen, zum Beispiel so:
Private Sub Form1_Load(sender As Object, e As EventArgs)
comboBox1.Items.AddRange(New String(){ _
"Frankreich", "Schweiz", "Spanien", "Deutschland", "Italien"})
' Starteintrag der Combobox
comboBox1.SelectedItem = "Spanien"
End Sub
Die Zeichenfolge des angezeigten Elements können Sie sowohl mit der Eigenschaft Text als auch mit SelectedText abfragen. Beiden Eigenschaften kann auch eine Zeichenfolge zugewiesen werden, wenn der Typ nicht ComboBoxStyle.DropDownList ist. Sie ersetzt den Text oberhalb der Liste. Beachten Sie aber, dass die so übergebene Zeichenfolge nicht automatisch zu den Listenelementen hinzugefügt wird. Dazu müssen Sie die Add-Methode des ComboBox.ObjectCollection-Objekts verwenden.
12.11.1 Ereignisse
Im Gegensatz zu einer Listbox verfügt die Combobox über das Click-Ereignis. So wichtig dieses Ereignis für andere Steuerelemente wie eine Schaltfläche auch ist, bei einer Combobox gibt es selten eine Situation, in der man dieses Ereignis sinnvoll einsetzen könnte, denn es wird sowohl beim Klicken der Pfeilschaltfläche ausgelöst als auch dann, wenn mit dem Mauszeiger in das Textfeld geklickt wird. Damit ist aber noch keine Auswahländerung oder auch nur die Änderung des angezeigten Textes verbunden.
Wichtig ist vielmehr das Ereignis, das eine Änderung des Inhalts des Textfeldes signalisiert: TextChanged. Die Ereignisauslösung kann zwei Ursachen haben:
- Der Benutzer hat eine Auswahl aus der Dropdown-Liste getroffen.
- Der Benutzer hat den im Eingabefeld angezeigten Text geändert (nur möglich, wenn die ComboBox nicht vom Typ DropDownList ist).
Einschränkender und damit auch präziser verhält sich das Ereignis SelectedIndexChanged, das nur nach einer Änderung der Auswahl ausgelöst wird. Daher ist dieses Ereignis besonders dazu geeignet, anderen Komponenten die Neuauswahl mitzuteilen.
Aktionen, die beim Öffnen oder Schließen der Liste ausgeführt werden sollen, sind in den beiden Ereignissen DropDown bzw. DropDownClosed zu implementieren. Allerdings werden diese beiden Events nur ausgelöst, wenn das Kombinationslistenfeld nicht auf DropDownStyle=Simple eingestellt ist.
12.11.2 Autovervollständigung
Textboxen und Kombinationslistenfelder haben die Fähigkeit der Autovervollständigung. Bei diesem Feature spielen die Eigenschaften AutoCompleteCustomSource, AutoCompleteMode und AutoCompleteSource die entscheidende Rolle. Wir haben uns mit der Autovervollständigung bereits im Zusammenhang mit Textboxen genauer beschäftigt (siehe Abschnitt 12.6.1, »Einzeilige Eingabefelder«).
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.