C# 对未传递给方法的所有枚举值执行操作
我有5个标记为A、B、C、D和E的复选框,我为它们创建了一个枚举。默认情况下会选中它们。我想将一个方法传递给enum,我想保持选中状态并取消选中其余的所有方法。你将如何最有效地完成这项工作,这就是我的想法,有什么想法吗 所以在下面的例子中,如果我将Type.A传递给CheckType,我希望最后只检查CheckboxAC# 对未传递给方法的所有枚举值执行操作,c#,enums,compare,coded-ui-tests,C#,Enums,Compare,Coded Ui Tests,我有5个标记为A、B、C、D和E的复选框,我为它们创建了一个枚举。默认情况下会选中它们。我想将一个方法传递给enum,我想保持选中状态并取消选中其余的所有方法。你将如何最有效地完成这项工作,这就是我的想法,有什么想法吗 所以在下面的例子中,如果我将Type.A传递给CheckType,我希望最后只检查CheckboxA public enum Type { A, B, C, D, E } public class SelectorPage
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);
}
}
}
}
我认为以下几点不言自明:
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);
}
}
试试这个:
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);
}
}
}
@Grantwiney关于环境的唯一上下文是编码的ui测试,不能保证RadioButton存在或可用。然而,如果是WinForms等,这将是一种有效的方法。是的,这是一个codedui测试,我无法控制我正在测试的ui。谢谢你的帮助,我想确保我在学习c语言的过程中尽可能高效地完成每件事。我喜欢这个比我的进步更大的进步。