Object vom Typ Control in GroupBox umwandeln

Hallo Miteinander,

ich möchte dynamisch erzeugte Steuerelemente in einer foreach-Schleife durchlaufen.

…foreach (Control checkBox_temp in gb_Temp.Controls) …

Wenn dies Checkboxen sind, dann möchte ich den Typ ändern und danach den Status Checked abfragen

…Convert.ChangeType(checkBox_temp, typeof(CheckBox));…

…if (dtAngelegteKombinationeninProzesskontrolle.Rows.Count != 0 && checkBox_temp.Checked == false)…

Leider stört sich der Debugger an der if-Bedingung, da er checkBox_temp nicht für eine CheckBox hält.

Die Konvertierung in eine Checkbox funktioniert und ich kann nach dem Ausführen mir auch das Attribut Checked ansehen.

Habt Ihr eine Idee, wie man die If-Klausel formulieren kann, ohne das sich der Debugger daran stört?

Vielen Dank
Stefan

Hallo Stefan,

wenn Du Dir sicher bist, dass in gb_Temp.Controls sowieso nur CheckBoxes sind, kannst Du auch gleich

foreach(CheckBox cb in gb\_Temp.Controls)

schreiben.
Ansonsten wäre folgender Weg richtig:

CheckBox cb;

foreach(Control ctrl in gb\_Temp.Controls) {
 if (ctrl is CheckBox)
 {
 cb = (CheckBox)ctrl;
 cb.Checked = true;
 }
}

Gruß
Thomas

Hi,

noch fixer geht theoretisch:

CheckBox cb;

foreach(Control ctrl in gb\_Temp.Controls) {
 cb = ctrl As CheckBox;
 if(cb != null)
 {
 cb.checked = true;
 }
}

Das ist aber wirklich nur FineTuning für Haarspalter :wink: