Wenn ein Kontrollkästchen aktiviert ist, legen Sie die andere deaktiviert
Ich habe zwei Checkboxen auf meiner form; chkBuried
und chkAboveGround
. Ich will es so einrichten, wenn ein aktiviert ist, wird die andere deaktiviert ist. Wie kann ich dies tun?
Habe ich versucht das CheckChanged
Eigenschaft:
private void chkBuried_CheckedChanged(object sender, EventArgs e)
{
chkAboveGround.Checked = false;
}
private void chkAboveGround_CheckedChanged(object sender, EventArgs e)
{
chkBuried.Checked = false;
}
Und es funktioniert, nur nicht so gut wie ich erhofft hatte. Das ist, wenn ich chkBuried
sind, dann prüfen Sie chkAboveGround
beide Felder werden deaktiviert, bevor ich den check wieder eines.
- Verwenden Sie Optionsschaltflächen, wenn Sie exklusiv sind
- In dieser situation will ich mit Checkboxen. Wenn es nicht einen Weg, dies zu tun mit den Checkboxen werde ich gehen Sie zurück zu radio-buttons
Du musst angemeldet sein, um einen Kommentar abzugeben.
ändern Sie Ihren code wie unten.
Schlage ich vor, Sie check_click statt check_changed
Den Grund für das Verhalten, das Sie erklärt haben, ist, dass Sie mit
CheckedChanged
Ereignis, was bedeutet, dass, wenn Sie die Checked-Eigenschaft einesCheckBox
manuell, das Ereignis wird auch ausgelöst, dass ein weiteres Feld zu reagieren, wieder.Daher Folgendes könnte helfen:
Ich würde es vorziehen, radio-buttons, aber Sie können etwas wie das hier tun:
Allerdings würde ich vorschlagen, radio-Boxen als auch.
Der code oben ist nicht getestet und möglicherweise einige Tippfehler
Bessere version, ermöglicht dem Benutzer, deaktivieren Sie Boxen.
Die beste Möglichkeit und einfachste Weg für mich war das erstellen einer Click-Ereignis anstelle des CheckedChanged-event.
Diese Methode funktioniert perfekt mit zwei oder mehr Kontrollkästchen und ermöglicht es, haben Sie alle nicht.
Dieser Arbeit wird für zwei deaktivierten Felder, da Sie bereits deaktiviert ist es einfacher.
Ich hatte dies selbst auch.