Windows Forms: CheckBox und RadioButton

CheckBox und RadioButton sind Steuerelemente, welche Sie vermutlich bereits aus Formularen (sowohl auf Papierform, als auch im Internet sowie in Programmen) kennen. Eine CheckBox (Kontrollkästchen) kennzeichnet sich durch das eckige Kästchen. Ein RadioButton (Auswahlfeld) kennzeichnet sich durch das runde Kästchen. Bei gruppierten Auswahlfeldern von RadioButton-Steuerelementen darf immer nur eines davon gewählt werden. Da wir zum jetzigen Zeitpunkt noch keine Möglichkeit kennen, Steuerelemente zu gruppieren, können wir aktuell nur eine Gruppe von RadioButton-Steuerelementen erzeugen (hierbei dient das Formular selbst als ein Steuerelement zur Gruppierung).
Sowohl bei CheckBox- als auch bei RadioButton-Steuerelementen können wir über die Eigenschaft Checked prüfen, ob ein Häkchen gesetzt ist oder nicht. Das Setzen des Hakens erfolgt vom Benutzer durch das Klicken auf das Steuerelement (Text oder auch Kästchen). Die Eigenschaft Text entspricht bei diesen Steuerelementen der Beschriftung, die zumeist rechts vom Kästchen angezeigt wird. Die Position des Kästchens kann jedoch durch die Eigenschaft CheckAlign verändert werden.
Das Ereignis CheckedChanged tritt ein, sobald sich der Wert der Checked-Eigenschaft ändert. Normalerweise passiert dies ausschließlich über das Setzen oder Wegnehmen eines Hakens auf der grafischen Oberfläche durch den Benutzer.
Im Beispiel können Sie sehen, dass wir in der Funktion radioButtonAuswahl_CheckedChanged() den Übergabeparameter sender nutzen. Dies liegt daran, dass wir für alle drei Radio-Buttons die gleiche Event-Funktion nutzen. Um nun unterscheiden zu können, welcher Radio-Button das Event ausgelöst hat, können wir das Objekt sender nutzen. Dieses Objekt entspricht dem Steuerelement, welches das Ereignis ausgelöst hat. Dies ist gängige Programmierpraxis und sollte immer dann eingesetzt werden, wenn es sich lohnt (z. B. um Programmcode zu sparen).

Form1.cs

private void checkBoxAktivierung_CheckedChanged(object sender, EventArgs e)
{
	if (checkBoxAktivierung.Checked)
	{
		radioButtonAuswahl1.Enabled = radioButtonAuswahl2.Enabled = radioButtonAuswahl3.Enabled = true;
		// Bei Reaktivierung müssen alle RadioButton nacheinander geprüft werden ob diese
		// gewählt sind, sodass wir den richtigen Text anzeigen können
		if (radioButtonAuswahl1.Checked)
			labelInfo.Text = radioButtonAuswahl1.Text + " gewählt!";
		else if (radioButtonAuswahl2.Checked)
			labelInfo.Text = radioButtonAuswahl2.Text + " gewählt!";
		else if (radioButtonAuswahl3.Checked)
			labelInfo.Text = radioButtonAuswahl3.Text + " gewählt!";
	}
	else
	{
		labelInfo.Text = "Kein RadioButton ausgewählt!";
		radioButtonAuswahl1.Enabled = radioButtonAuswahl2.Enabled = radioButtonAuswahl3.Enabled = false;
	}
}

// Event-Funktion wird für alle 3 RadioButtons verwendet, über das sender-Objekt ermitteln wir die RadioButton
private void radioButtonAuswahl_CheckedChanged(object sender, EventArgs e)
{
	RadioButton oRadioButton = (RadioButton)sender;
	
	// Ereignis wird mehrmals ausgelöst, uns interessiert jedoch nur das Ereignis von 
	//  dem RadioButton, welcher aktuell ausgewählt ist
	if (oRadioButton.Checked)
		labelInfo.Text = oRadioButton.Text + " gewählt!";
}
Download

LinksRechts