Laden...

Mehrere Gruppen von Radiobuttons untereinander synchronisieren

Erstellt von mrdjoker vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.161 Views
M
mrdjoker Themenstarter:in
125 Beiträge seit 2008
vor 13 Jahren
Mehrere Gruppen von Radiobuttons untereinander synchronisieren

Hallo zusammen,

ich stehe gerade auf dem Schlauch.. ich suche eine gute Möglichkeit,
wie ich Radiobuttons synchronisieren kann.

Ich habe 3 Groupboxen mit jeweils 4 Radiobuttons (siehe Bild).

Ich möchte die Radiobuttons so synchronisieren, dass immer alle Radiobuttons einer Zeile aktiviert werden.
Im Bild wäre das z.B. die oberste Zeile. Klickt man nun einen Radiobutton in der 2. Zeile an,
so sollen in allen Groupboxen die 2. Zeile markiert werden.

Über hilfreiche Ideen wäre ich sehr dankbar.

Gruß
mrdjoker

R
21 Beiträge seit 2006
vor 13 Jahren

Einfach bei einem OnCheckChange Event den Markierten ausfindig machen und die anderen beiden Controls ebenfalls auf gleicher höhe markieren

Die Dokumentation sollte dir alle Fragen beantworten

M
mrdjoker Themenstarter:in
125 Beiträge seit 2008
vor 13 Jahren

Danke für die schnelle Antwort!

Ich wollte mir die Mühe eigentlich ersparen, bei jedem Radiobutton das OnCheckChange Event zu benutzen.

Das wären nämlich bei 4x3 Radiobuttons 12 Methoden.

Gibts da nichts eleganteres?

3.825 Beiträge seit 2006
vor 13 Jahren

Schau Dir auch bitte diese FAQ dazu an :

[FAQ] Event nur bei Benutzeraktion auslösen, nicht bei programmtechnischer Änderung

Ich würde für alle Buttons den gleichen Eventhandler registrieren, und dann sowas ausführen :

private void radioButton_CheckedChanged(Object sender, EventArgs e)
{
    if (_ignoreEvents)return;
    _ignoreEvents = true;
    foreach(GroupBox grp in this.Controls)
        foreach(Control ctl in grp.Controls)
            if (Math.Abs(ctl.TabStop - ((CheckBox).sender).TabStop) % 4 == 0)
                ((CheckBox)ctl.)Checked = true;
    _ignoreEvents = false;
}

Dazu müsstest Du noch die Reihenfolge der ersten Spalte ändern bzw. die Tabstops richtig setzen.

Nur so hingetippt, keine Garantie dass es auch so funktioniert.

Hinweis : Ist zwar kurz, aber nicht sehr übersichtlich 😦

Mehr Tipparbeit, aber leichter zu lesen :


CheckBox cb = (CheckBox)sender;
if (_ignoreEvents || !cb.Checked) return;
if (cb == CheckBox1 || cb == CheckBox5 || cb == CheckBox9) { CheckBox1.Checked = true; CheckBox5.Checked = true; CheckBox9.Checked = true; }
if (cb == CheckBox2 || cb == CheckBox6 || cb == CheckBox10) { CheckBox2.Checked = true; CheckBox6.Checked = true; CheckBox10.Checked = true; }
...

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

M
mrdjoker Themenstarter:in
125 Beiträge seit 2008
vor 13 Jahren

Vielen Dank BerndFfm,

genau sowas habe ich mir vorgestellt.

Besten Dank und einen schönen Abend noch