Mittels foreach Text- und Combo-Boxen leeren

alejen

Grünschnabel
Hallo,

ich will über ein foreach-Schleife alle Text- und Combo-Boxen auf meiner Form leeren.

Bei den Textboxen ist alle ok, bei den Comboboxen bleibt der eingestellte Wert stehen.
Wie kann ich hier den Eintrag setzen bzw, das Property SelectedIndex ansprechen?

Vielleich kann mir jemand weiterhelfen.
Danke.


Aufruf:
..
ControlsLeeren(this.Controls);
..

private void ControlsLeeren(System.Windows.Forms.Control.ControlCollection Collection)
{
foreach (Control cnt in Collection)
{
if (cnt is TextBox)
{
cnt.Text = "";
}
else
{
if (cnt is ComboBox)
{
// Hier sollte die Einstellung in der combobox geleert werden
cnt.Text = "";
}
}
ControlsLeeren(cnt.Controls);
}
}
 
Hallo!

cnt.Items.Clear(); löscht alle Einträge in der ComboBox
cnt.Text = ""; löscht die Anzeige
 
Hallo,

danke für die Antworten.

Das mit cnt.Text = "" funktioniert nicht, der Inhalt bleibt stehen und
das Property SelectedIndex kann ich nicht ansprechen oder besser gesagt, ich weis nicht wie ich es ansprechen soll.
 
In deinem BeispielCode ist der Aufruf von ControlsLeeren() zuviel!

Code:
private void button1_Click(object sender, System.EventArgs e)
{
	ControlsLeeren(this.Controls);
}

private void ControlsLeeren(System.Windows.Forms.Control.ControlCollection Collection)
{
	foreach (Control cnt in Collection)
	{
		if (cnt is TextBox)
		{
			cnt.Text = "";
		}
		else
		{
			if (cnt is ComboBox)
			{
				// Hier sollte die Einstellung in der combobox geleert werden
				
				//Löscht nur den Text; setzt den Index aber nicht zurück
				//cnt.Text = "";

				ComboBox l_Combo = (ComboBox) cnt;
				l_Combo.SelectedIndex = -1; //Norberts Vorschlag
			}
		}
		//Fehler
		//ControlsLeeren(cnt.Controls);
	}
}
 
Hallo x509,

danke für Deine Antwort.

Der 2. Aufruf ist ein rekursiver Aufruf um die Child-Controls zurückzusetzen,
z. B. auf der Form liegt ein Panel, dieses Panel enthält weitere Controls, diese Controls enthalten wiederum Controls usw..
 
Zurück