我有5个标签为A
,B
,C
,D
和E
的复选框,我已创建enum
对于。默认情况下会检查它们。我想通过一个方法,我想要留下的枚举,并取消选中所有其余的。你会如何最有效地做到这一点,这就是我所得到的,任何想法?
所以在下面的示例中,如果我将Type.A
传递给CheckType
,我预计最后仍会检查CheckboxA
。
public enum Type
{
A,
B,
C,
D,
E
}
public class SelectorPage
{
public void CheckType(Type type)
{
if (type != Type.A)
{
if (ACheckBox.Exists)
{
CheckA(false);
}
}
if (type != Type.B)
{
if (BCheckBox.Exists)
{
CheckB(false);
}
}
if (type != Type.C)
{
if (CCheckBox.Exists)
{
CheckC(false);
}
}
if (type != Type.D)
{
if (DCheckBox.Exists)
{
CheckD(false);
}
}
if (type != Type.E)
{
if (ECheckBox.Exists)
{
CheckE(false);
}
}
}
}
答案 0 :(得分:0)
我认为以下内容非常自我解释:)
public class SelectorPage
{
public void CheckType(Type type)
{
if (ACheckBox.Exists)
CheckA(type == Type.A);
if (BCheckBox.Exists)
CheckB(type == Type.B);
if (CCheckBox.Exists)
CheckC(type == Type.C);
if (DCheckBox.Exists)
CheckD(type == Type.D);
if (ECheckBox.Exists)
CheckE(type == Type.E);
}
}
答案 1 :(得分:0)
试试这个:
public void CheckType(Type type)
{
Dictionary<Type, CheckBox> map = new Dictionary<Type, CheckBox>
{
{ ACheckBox, Type.A },
{ BCheckBox, Type.B },
{ CCheckBox, Type.C },
{ DCheckBox, Type.D },
{ ECheckBox, Type.E },
}
foreach(var pair in map)
{
CheckBox checkBox = pair.Key;
Type checkBoxType = pair.Value;
if(checkBox.Exists)
{
bool shouldBeChecked = checkBoxType == type;
checkBox.Check(shouldBeChecked);
}
}
}