Forum: PC-Programmierung RadioButton in schleife abfragen C#7


von oswald (Gast)


Lesenswert?

Hallo Experten,
ich habe mehrere RadioButtons und möchte diese in einer Foreach Schleife 
abfragen!
1
foreach (RadioButton rB in rBList)
2
            {
3
                if (rB.Checked== true)
4
                {
5
                    wert |= (1 <<INDEX);
6
                }
7
            }

leider komme ich nicht auf die Indexnummer bzw schleifen Zähler!
Wie mache ich das?
Bitte nicht lachen aber ich bin Anfänger!

LG

Oswald

von Lutz H. (luhe)


Lesenswert?

Die Schleife wird für jeden Butten abgearbeitet, ausgewertet,  zum 
Schluss steht nur das Ergebnis der letzten Schleife zur Verfügung.

von oswald (Gast)


Lesenswert?

Sorry habe das falsche Element verwendet!
Ich baue es jetzt auf Checkboxen um!
Wie komme ich da auf den index der schleife!
1
foreach (CheckBox ceckB in ceckBList)
2
            {
3
                if (ceckB .Checked== true)
4
                {
5
                    wert |= (1 <<INDEX);
6
                }
7
            }

von SvenW (Gast)


Lesenswert?

Hallo Oswald,
die Anzahl deiner Checkboxen ist doch fest. Speichere die Referenzen 
nicht in einer Liste sondern einem Array. Dann kannst du eine 
for-Schleife nehmen und hast einen Index.

Bei deinem ursprünglichem Ansatz könntest du noch eine Zählvariable 
hinzufügen (int i = 0; ...; i++).

MfG Sven

von Ich (Gast)


Lesenswert?

Ich kenne nun Deine verwendete Liste nicht, aber die normalen Listen 
haben eine Count Eigenschaft und einen Indexer. Erstelle also eine 
Schleife bis List.Count und greife über den Indexer auf die Elemente zu.

von Der E. (rogie)


Lesenswert?

Du kannst für jedes Checkbox Objekt auch die "Tag" Eigenschaft setzen 
und dann in der Schleife auswerten.

Ansonsten kannst du es so machen (wenn deine Checkboxen in einen List 
Objekt gespeichert sind):
1
for (int i=0; i < ceckBList.Count; i++)
2
{
3
  CheckBox ceckB = ceckBList[i];
4
  //usw.
5
}

: Bearbeitet durch User
von Dierk V. (vman)


Lesenswert?

Ich gebe zu meine Antwort geht ein bisschen an Deiner Frage vorbei, 
aber:

Normalerweise reagiert man doch auf die Status Änderung eines Benutzer 
Steuerelements über einen Event. Deine Checkboxen haben doch ein OnClick 
/ Action oder ValueChanged event. Da kannst Du doch in dem EventHandler 
Deinen Code reinschreiben. Ist das nicht viel praktischer als die Boxen 
in einer Schleife abzufragen?

von Eddy C. (chrisi)


Lesenswert?

So kann eine direkte Lösung aussehen:
1
int Wert = 0;
2
int Mask = 1;
3
foreach (CheckBox ceckB in ceckBList)
4
{
5
    if (ceckB.Checked)
6
    {
7
        Wert |= Mask;
8
    }
9
    Mask <<= 1;
10
}

Dierk V. schrieb:
> Normalerweise reagiert man doch auf die Status Änderung eines Benutzer
> Steuerelements über einen Event.

Wenn es um einen Eingabedialog geht, sammelt man sinnvollerweise mit dem 
Klick auf den Button "OK" die Daten ein und prüft auf Plausibilität. Und 
schon hast Du den Salat.

von Dierk V. (vman)


Lesenswert?

Eddy Current schrieb:

> Wenn es um einen Eingabedialog geht, sammelt man sinnvollerweise mit dem
> Klick auf den Button "OK" die Daten ein und prüft auf Plausibilität. Und
> schon hast Du den Salat.

Man kann doch auch im Event Handler auf Plausibilität prüfen. Falls das 
nicht möglich sein sollte (warum auch immer) ändert der Event Handler 
eben nur eine Variable deren Inhalt beim Klick auf "OK" geprüft wird.

Viele Wege füren nach Rom, ich finde meinen eleganter, aber das ist 
subjektiv.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.