我尝试用“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/