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
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
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?
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
Vielen Dank BerndFfm,
genau sowas habe ich mir vorgestellt.
Besten Dank und einen schönen Abend noch