我有两个16个复选框的数组,我希望在for语句运行时逐步检查这些复选框。它看起来像这样:
public void Cycle()
{
if (host == false)
{
CheckBox[] cboxes = relayRow.CheckBoxes;
}
else if (host == true)
{
CheckBox[] cboxes = relayRow2.CheckBoxes;
}
for (int i = 0; i < 16; i++)
{
cboxes[i].Checked = true;
}
}
我在&#39; cbox&#39;下面有一条红线。在for语句中说&#34;名称&#39; cboxes&#39;在当前的背景下不存在。&#34; 如果我一次只使用一个,它可以很好地工作,所以我的阵列不应该有问题。一次工作一次如下:
public void Cycle()
{
CheckBox[] cboxes = relayRow.CheckBoxes;
for (int i = 0; i < 16; i++)
{
cboxes[i].Checked = true;
}
}
我的布尔&#39;主机&#39;也应该没有问题。因为我在其他地方使用它,它按预期工作。我只是想在两个16的数组之间进行切换。提前谢谢。
答案 0 :(得分:2)
您只需要在if
语句之外声明变量:
public void Cycle()
{
CheckBox[] cboxes = null;
if (host == false)
{
cboxes = relayRow.CheckBoxes;
}
else if (host == true)
{
cboxes = relayRow2.CheckBoxes;
}
for (int i = 0; i < 16; i++)
{
cboxes[i].Checked = true;
}
}
或只是
public void Cycle()
{
CheckBox[] cboxes = host ? relayRow2.CheckBoxes : relayRow.CheckBoxes;
for (int i = 0; i < 16; i++)
{
cboxes[i].Checked = true;
}
}
答案 1 :(得分:0)
对斯坦利的答案略有不同,不确定你是否需要使用数组和for循环,这会迫使你硬编码复选框的数量,但这也应该起作用:
public void Cycle()
{
var cboxes = host ? relayRow2.CheckBoxes : relayRow.CheckBoxes;
cboxes = (from checkBox in cboxes.ToList()
select new CheckBox { Checked = true}).ToArray();
}
P.S。我没有足够的声望点评论,否则我只会评论你的答案D斯坦利和上升(对不起!)