Frage

Ich habe zwei RadioButtons. R1 und R2

Ich habe beide auf Enabled = true aktivieren und nur unkontrolliert auf Enabled = false

deaktivieren
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?

War es hilfreich?

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;
    }
  }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top