我有两个RadioButton
s: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;
}
}
}
}
我可以使用哪个运算符在一个字符串中写入每个条件?
答案 0 :(得分:2)
以下内容类似于您正在做的事情,但您的原始代码中有一个未处理的案例:if((!value)&&(r1.Checked)),r1.Enabled永远不会设置(r2的条件相同)。如果将r1.Enabled和r2.Enabled设置为true(默认情况下为某处),则以下代码可能就足够了。
r1.Enabled = value || r1.Checked; r2.Enabled = value || r2.checked;
如果你有奇怪的依赖,我没有看到任何特别干净......
答案 1 :(得分:2)
关键是当值为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;
}
}
答案 2 :(得分:0)
我认为这很清楚:
public bool Enabled
{
set
{
if (value || !r1.checked) {
r1.Enabled = value;
}
if (value || !r2.checked) {
r2.Enabled = value;
}
}
}