質問

2つの RadioButton があります:r1とr2

Enabled = true で両方を有効にし、 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;
      }
    }
  }
}

1つの文字列に各条件を書き込むために使用する演算子はどれですか?

役に立ちましたか?

解決

重要なのは、値がfalseで、対応するチェックボックスが チェック の場合、Enabledプロパティがそのまま残されることです。だからこれを試してください:

public bool Enabled
{  
  set
  {  
     r1.Enabled = !r1.Checked? value: value || r1.Enabled;   
     r2.Enabled = !r2.Checked? value: value || r2.Enabled;   
  }
}

または

public bool Enabled
{  
  set 
  {  
      r1.Enabled = r1.Checked? value || r1.Enabled: value;   
      r2.Enabled = r2.Checked? value || r2.Enabled: value;   
  }
}

他のヒント

以下はあなたがやっていることと似ていますが、元のコードでは未処理のケースがあります:if((!value)&&(r1.Checked))、r1.Enabledは決してありません設定(r2と同じ条件)。デフォルトでr1.Enabledおよびr2.Enabledをtrueに設定した場合、次のコードで十分です。

r1.Enabled = value || r1.Checked;
r2.Enabled = value || r2.checked;

奇妙な依存関係がある場合、特にきれいなものは表示されません...

これは十分に明確だと思います:

public bool Enabled
{
  set
  {
    if (value || !r1.checked) {
      r1.Enabled = value;
    }
    if (value || !r2.checked) {
      r2.Enabled = value;
    }
  }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top