質問
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;
}
}
}
所属していません StackOverflow