C#: Check boxes



我有4个复选框。可以选择一个或全部以使程序来完成它的事情。现在,我只有在仅选择其中一个的语句时才有。如果我要在所有情况下进行陈述,我将需要24。是否有更简单的方法?

您可以使用Enum保持检查值

[Flags]
enum BoxesChecked
{ None = 0, First = 1, Second = 2, Third = 4, Fourth = 8 }
...
var boxesChecked = BoxesChecked.None; 
if (box1.Checked)
    boxesChecked |= BoxesChecked.First;

然后制作关联动作的地图,并根据给定的组合检索所需的操作

var actionsMap = new Dictionary<BoxesChecked, Action>
{ 
    { BoxesChecked.First | BoxesChecked.Second, DoSomething },
    { BoxesChecked.Second | BoxesChecked.Fourth, DoSomethingElse },
    ...
};
var action = actionsMap[boxesChecked];

最新更新