对复选框使用“if”语句的替代方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对复选框使用“if”语句的替代方法相关的知识,希望对你有一定的参考价值。

我尝试用“for”或“while”替换每个“if”:

if (CheckObject1.Checked)
    XRPC.SetMemory(8184, value);
if (CheckObject2.Checked)
    XRPC.SetMemory(7848, value);
[...]
if (CheckObject20.Checked)
    XRPC.SetMemory(1800, value);

我已经尝试过了,但问题是我不知道如何增加checkBox末尾的数字:

int current = 8184;
int X = 1;
while (current > 1800)
{
    if (CheckObjectX.Checked) // regex?
        XRPC.SetMemory(current, value);
    X += 1;
    current -= 336;
}

我不知道正则表达式是否可以用于“checkBox”......任何想法?

答案

如果这是winforms你可以使用Controls.Find和LINQ:

int current = 8184;
int X = 1;
while (current > 1800)
{
    CheckBox CheckObjectX = this.Controls.Find("CheckObject"+X, true).OfType<CheckBox>().SingleOrDefault();
    if (CheckObjectX != null && CheckObjectX.Checked)
        XRPC.SetMemory(current, value);
    X += 1;
    current -= 336;
}

如果它们都在同一个父控件中并且没有嵌套,则可以将false作为第二个参数传递,并将this替换为容器(如myCheckBoxPanel)。这可能更有效率。

另一答案

您应该将所有复选框加载到列表中并迭代它。或者甚至更好,将它们加载到字典中,将int作为键,将复选框作为值,以便可以“乱序”访问它们。

或者作为替代方法,使用复选框的Tag属性存储整数键,然后通过查找具有匹配int的项来访问它们,可能还会结合使用字典的建议。

有很多方法可以解决这个问题,但不要使用变量名。

以上是关于对复选框使用“if”语句的替代方法的主要内容,如果未能解决你的问题,请参考以下文章

如何应对100多条IF语句

c++中if语句的替代

Jquery if复选框是否已选中Bootstrap开关

20个简洁的 JS 代码片段

编写代码片段的更简洁的方法

是否有替代 SET STATISTICS TIME 也显示语句的替代方法?