c# - 为复选框使用 "if"语句的替代方案

标签 c# for-loop if-statement checkbox while-loop

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

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

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

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)。这可能会更有效率。

关于c# - 为复选框使用 "if"语句的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47883307/

相关文章:

java - && 运算符的问题

c# - close var XDocument.Load 方法/方式

C# 如何在控制台应用程序中制作水平条形图

c# - 基于接口(interface)的设计和可选方法参数

javascript - 对象上的 For 循环失去控制

python - 使用 if 和 break 创建 Python 列表理解

c# - 等待的任务能否在 IsCompleted 中返回 false

for-loop - for-in 循环中的类型转换

python-3.x - 打印_的刽子手游戏问题???逻辑问题,我想

javascript - 谷歌应用程序脚本 : "range.isBlank()" is false but "if(range.isBlank())" go through?