Laden...

CheckBox-Namen aus Variablen zusammensetzen

Erstellt von Graf vor 13 Jahren Letzter Beitrag vor 13 Jahren 3.166 Views
Thema geschlossen
Graf Themenstarter:in
1 Beiträge seit 2010
vor 13 Jahren
CheckBox-Namen aus Variablen zusammensetzen

Hallo zusammen!

Ich habe ein Problem, bei dem ich alleine nicht weiterkomme:

Ich möchte abfragen, ob eine CheckBox aktiviert ist. Der Name der CheckBox liegt als String-Variable vor.
Wie stelle ich es an, dass ich die Variable als Objektnamen verwenden kann?

Eine ähnliche Situation hatte ich bereits bei TextBoxen, dort habe ich das ganze folgendermaßen gelöst:


string AName = "name1";
Control[] ABox = this.Controls.Find(AName, true);
ABox[0].Text = zahl.ToString();

Allerdings funktioniert das bei CheckBoxen nicht.

Die einzige Alternative, die ich finden konnte, ist folgende:


foreach (CheckBox cb in this.Controls)
{
  if (cb.Name == AName)
  {
    if (!cb.Checked) 
    {
      code;
    }
  }
}

Das gefällt mir erstens nicht, weil ich sehr viele CheckBoxen habe. Abgesehen davon bricht das Programm bei der Ausführung ab, mit der Fehlermeldung, dass GroupBoxen nicht in CheckBoxen konvertiert werden könnten.

Was mache ich falsch?

2.223 Beiträge seit 2005
vor 13 Jahren

Hallo Graf und Herzlich Willkommen hier im Forum,

die Antwort liegt in der Fehlermeldung

gerade zu deinem Problem, wurde hier schon so einige male besprochen

Vilele Grüße
Lars

D
216 Beiträge seit 2009
vor 13 Jahren

Mach alle Checkboxen in ein Dictionary<string, CheckBox>, dann kannste ganz einfach drauf mit CheckBoxen["name1"].Checked dadrauf zugreifen.

Darth Maim

1.820 Beiträge seit 2005
vor 13 Jahren

Hallo!

Der Fehler kommt daher, dass du alle Controls durchläufst, und da ist auch eine GroupBox dabei. Du solltest eher in der for each nur den Control-Typ verwenden und in einer nachfolgenden if-Abfrage auf CheckBox prüfen.

Nobody is perfect. I'm sad, i'm not nobody 🙁

A
118 Beiträge seit 2009
vor 13 Jahren

Ja, entweder so wie es tom-essen geschrieben hat, oder folgendermassen:


IEnumerable<CheckBox> checkboxes = this.Controls.OfType<CheckBox>();
foreach (CheckBox c in checkboxes)
{
         //code
}

Gruss Aratar

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo Graf,

siehe auch [FAQ] Variablennamen zur Laufzeit zusammensetzen.

herbivore

Thema geschlossen