12.18 Registerkarten (TabControl)
Registerkarten helfen, einen Dialog besser und übersichtlicher zu gliedern und Funktionalitäten zu gruppieren. Typischerweise werden Registerkarten gern für Optionen benutzt.
Alle Registerkarten einer Form bilden einen logischen Verbund und werden durch die Klasse TabControl repräsentiert. Diese fasst die einzelnen Registerkarten vom Typ TabPage zusammen und verwaltet sie.
Über die Eigenschaft TabPages des TabControl-Objekts können Sie der Auflistung die neue Registerkarten hinzufügen. Dazu markieren Sie diese Eigenschaft im Eigenschaftsfenster und klicken auf die Schaltfläche in der Wertespalte. Es öffnet sich daraufhin ein Dialog, über dessen Schaltfläche Hinzufügen eine neue Registerkarte angelegt wird. Im gleichen Dialog können Sie auch die Eigenschaften der neuen Registerkarte eintragen.
Eigenschaften
Die optische Darstellung der Registerkarten wird mit der Eigenschaft Appearance des Registerkarten-Steuerelements festgelegt. Zur Auswahl stehen drei Optionen: Normal, Buttons und FlatButtons (siehe Abbildung 12.33).
Abbildung 12.33 Darstellungsformen der Registerkarten
Standardmäßig werden alle Registerkarten am oberen Rand des Steuerelements angezeigt. Mit Alignment können Sie die Tabellenreiter aber auch rechts, links oder unten anordnen.
Manchmal passen nicht alle Reiter in eine Zeile. Um dann durch alle Registerkarten navigieren zu können, werden zwei Pfeilschalter eingeblendet. Alternativ können Sie mit der Einstellung MultiLine=True die Registerkarten auf mehrere Zeilen aufteilen. Passen alle Reiter in eine Zeile, hat die Einstellung keinen Effekt.
SizeMode gibt an, wie die Größe der einzelnen Karteireiter bestimmt wird, und Padding legt den Abstand zwischen der Beschriftung und dem Rand des Karteireiters fest. Padding.X gibt dabei den Abstand zum linken und rechten Rand des Karteireiters in Pixel an, Padding.Y den Abstand zum oberen und unteren Rand.
Jeder Karteireiter kann neben der Schrift auch noch ein Bildchen anzeigen. Voraussetzung dafür ist, dass in der Eigenschaft ImageList des TabControl-Objekts ein ImageList-Steuerelement eingetragen ist, das Sie vorher der Form hinzugefügt haben.
Registerkarten aktivieren
Um aus der aktuellen Registerkarte heraus mittels Programmcode eine andere zu aktivieren, stellt die Klasse TabControl zwei Eigenschaften zur Verfügung: SelectedIndex und SelectedTab. Angenommen, Kartei ist der Name eines TabControl-Objekts mit mindestens drei Registerkarten, dann können Sie mit
Kartei.SelectedIndex = 2
die dritte Registerkarte öffnen.
Es gibt auch zwei Methoden zur Aktivierung einer anderen Registerkarte. SelectTab können Sie den Index, den Namen oder die Referenz der Registerkarte übergeben, die aktiviert werden soll. DeselectTab aktiviert die nächste in der Liste folgende Registerkarte.
Ereignisse
Wenn sich die aktuelle Registerkarte in einem TabControl ändert, treten die folgenden Ereignisse in der angegebenen Reihenfolge ein:
- Deselecting
- Deselected
- Selecting
- Selected
Deselecting und Deselected werden vor bzw. nach der Deaktivierung einer Registerkarte ausgelöst, Selecting und Selected analog, wenn eine Registerkarte aktiviert wird.
Mit dem zweiten Parameter des Ereignishandlers von Deselecting und Selecting vom Typ TabControlCancelEventArgs können Sie über dessen Eigenschaft Cancel den eingeleiteten Vorgang abbrechen. Das haben wir schon bei anderen Ereignissen ähnlich gesehen, zum Beispiel beim Ereignis FormClosing der Form. Werden Deselected und Selected ausgelöst, ist der Vorgang bereits abgeschlossen und der zweite Parameter hat den Typ TabControlEvent-Args.
Den beiden Args-Objekten können Sie über Eigenschaften den Index und die Referenz der betroffenen Registerkarte entnehmen. Die Eigenschaft Action vom Typ TabControlAction spezifiziert das auslösende Ereignis. Die vier Werte der Enumeration haben die gleichen Namen wie die Ereignisse.
Steuerelemente in den Registerkarten
Die Gestaltung der Registerkarten ist denkbar einfach. In der Entwicklungsumgebung wählen Sie eine Registerkarte aus und können darin in bekannter Weise die Steuerelemente einfügen. Jede Registerkarte verwaltet die Steuerelemente in einer eigenen Auflistung vom Typ Con-trol.ControlCollection, deren Referenz die Eigenschaft Controls bereitstellt.
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.