Wie boolean Betrieb zu optimieren?
Frage
Ich habe zwei RadioButton
s. R1 und R2
Ich habe beide auf Enabled = true
aktivieren und nur unkontrolliert auf Enabled = false
public bool Enabled
{
set
{
if(value)
{
r1.Enabled = value; // true
r2.Enabled = value;
}
else
{
if(!r1.Checked)
{
r1.Enabled = value; // false if not checked
}
if(!r2.Checked)
{
r2.Enabled = value;
}
}
}
}
Welche Betreiber habe ich jede Bedingung in einer Zeichenfolge zu verwenden, zu schreiben?
Lösung
Der Schlüssel ist, dass die Enabled-Eigenschaft bleibt wie wenn der Wert falsch ist und das entsprechende Kontrollkästchen aktiviert . Also versuchen Sie dies:
public bool Enabled
{
set
{
r1.Enabled = !r1.Checked? value: value || r1.Enabled;
r2.Enabled = !r2.Checked? value: value || r2.Enabled;
}
}
oder
public bool Enabled
{
set
{
r1.Enabled = r1.Checked? value || r1.Enabled: value;
r2.Enabled = r2.Checked? value || r2.Enabled: value;
}
}
Andere Tipps
Die folgenden wäre ähnlich dem, was du tust, aber du hast eine nicht behandelte Fall in Ihrem ursprünglichen Code bekam: if (! (Wert) && (r1.Checked)) wird r1.Enabled nie (gleich eingestellt Bedingung für r2). Wenn Sie r1.Enabled und r2.Enabled auf true, standardmäßig, irgendwo, kann der folgende Code ausreichend sein.
r1.Enabled = value || r1.Checked; r2.Enabled = value || r2.checked;
Wenn Sie seltsame Abhängigkeiten haben, ich sehe nichts besonders sauber ...
Ich denke, das ist klar genug:
public bool Enabled
{
set
{
if (value || !r1.checked) {
r1.Enabled = value;
}
if (value || !r2.checked) {
r2.Enabled = value;
}
}
}