12.5 Optionsschaltflächen (RadioButton)
Die Optionsschaltflächen der Klasse RadioButton ähneln den Kontrollkästchen, unterscheiden sich von diesen und allen anderen Steuerelementen aber in zwei wesentlichen Punkten:
- Optionsfelder treten niemals einzeln, sondern immer nur in einer Gruppe auf.
- Die Optionsschaltflächen einer Gruppe beeinflussen sich gegenseitig, weil aus einer Gruppe nur eine Optionsschaltfläche aktiviert sein kann.
12.5.1 Gruppierung
Optionsschaltflächen, die zu einer Gruppe gehören, befinden sich im gleichen Container. Im einfachsten Fall ist das die Form. Benötigen Sie in einer Form mehrere unabhängige Optionsschaltflächengruppen, kann die Form diese Forderung nicht mehr allein erfüllen. Es wird ein weiteres, gruppierendes Steuerelement benötigt. Meistens werden dazu benutzt:
- ein GroupBox-Steuerelement, das gleichzeitig auch einen Rahmen um die eingeschlossene Gruppe anzeigt, oder
- ein Panel-Steuerelement mit dem Nachteil, dass es sich mit seinen Standardeinstellungen optisch nicht vom Clientbereich der Form abhebt.
Abbildung 12.5 zeigt zwei Optionsschaltflächengruppen in einem Formular: Eine Gruppe ist der Form zugeordnet (männlich und weiblich), die andere einem GroupBox-Steuerelement.
Abbildung 12.5 Gruppierung von Optionsschaltflächen
Klickt der Anwender auf die Schaltfläche männlich, wird diese aktiviert, und gleichzeitig wird die Aktivierung von weiblich aufgehoben. Die Optionsschaltflächen in der durch die Groupbox beschriebenen Gruppe bleiben davon unberührt. Analog verhalten sich auch die Optionsschaltflächen in der GroupBox, wenn ein anderes Element ausgewählt wird: Die Selektierung von Gewerblicher hebt die Voreinstellung der Option Angestellter auf, ohne dass sich das auf die der Form zugeordneten Optionsschaltflächen auswirkt.
12.5.2 Eigenschaften
Die Liste der Eigenschaften einer Optionsschaltfläche ähnelt der des Kontrollkästchens. Der Auswahlzustand wird durch die Eigenschaft Checked beschrieben. Sie hat den Standardwert False, der eine nicht aktivierte Optionsschaltfläche beschreibt. Analog ist die Ausrichtung der Beschriftung mit TextAlign, die Ausrichtung des Aktivierungspunktes mit CheckAlign sowie die Fähigkeit, der Anzeige des Steuerelements durch ein Bild optisch eine besondere Note zu verleihen.
Auch Optionsschaltflächen haben eine Eigenschaft Appearance, und wie gehabt zeigt die Einstellung Appearance.Button die Optionsschaltfläche als herkömmliche Schaltfläche an.
12.5.3 Zustandswechsel programmieren
So wie die Klasse CheckBox, so löst auch die Klasse RadioButton das Ereignis CheckedChanged aus. Allerdings unterscheidet sich das Auslösen des Ereignisses bei einer Optionsschaltfläche von dem bei einem Kontrollkästchen. Bei einem CheckBox-Steuerelement wird das Ereignis ausgelöst, sobald sich dessen Zustand ändert. Die Checkbox bleibt dabei fokussiert. Sehen wir uns nun dasselbe Ereignis an, wenn es durch eine Optionsschaltfläche ausgelöst wird. Dazu nehmen wir an, die beiden Optionsschaltflächen in der Gruppe Position aus Abbildung 12.5 haben die folgende Implementierung des CheckedChanged-Ereignisses:
Private Sub rdbAngestellter_CheckedChanged(sender As Object, e As EventArgs) MessageBox.Show("Angestellter") End Sub Private Sub rdbGewerblicher_CheckedChanged(sender As Object, e As EventArgs) MessageBox.Show("Gewerblicher") End Sub
Wenn wir die Anwendung starten und mit der Tabulatortaste in die Gruppe Position navigieren, wird zuerst die Optionsschaltfläche den Fokus erhalten, der zur Entwicklungszeit der Status Checked=True zugewiesen worden ist. Wechseln Sie danach innerhalb der Gruppe auf eine andere Optionsschaltfläche (Tabulatortaste oder Maus), verliert das aktive Element den Fokus und damit auch seinen Aktivierungszustand. Die Folge ist die Auslösung von CheckedChanged. Anschließend erhält die neu gewählte Optionsschaltfläche den Fokus, wird aktiviert und löst seinerseits ebenfalls CheckedChanged aus.
Ein Fokuswechsel zwischen Optionsschaltflächen ruft also immer zwei CheckedChanged-Ereignisse hervor: zuerst bei dem Element, das seine Aktivierung verliert, und danach bei dem, das neu ausgewählt wurde. Bei der Ereignisauslösung haben die Optionsschaltflächen bereits ihren neuen Checked-Zustand. Weil keine Aussage darüber getroffen ist, wie der Zustand der Schaltfläche bei der Ereignisauslösung ist, muss dieser gegebenenfalls überprüft werden:
Private Sub radioButton1_CheckedChanged(sender As Object, e As EventArgs) If radioButton1.Checked Then ... End Sub
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.