控制多个Checkbox阵列

时间:2016-07-19 19:29:26

标签: c# arrays checkbox

我有两个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的数组之间进行切换。提前谢谢。

2 个答案:

答案 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斯坦利和上升(对不起!)