C# 控制多个复选框数组

C# 控制多个复选框数组,c#,arrays,checkbox,C#,Arrays,Checkbox,我有两个由16个复选框组成的数组,我希望在for语句运行时逐渐选中它们。看起来是这样的: public void Cycle() { if (host == false) { CheckBox[] cboxes = relayRow.CheckBoxes; } else if (host == true) { CheckBox[] cboxes =

我有两个由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;
        }
}
公共作废周期()
{
如果(主机==false)
{
复选框[]cboxes=重新启用复选框;
}                
else if(host==true)
{
复选框[]cboxes=relayRow2.复选框;
}
对于(int i=0;i<16;i++)
{            
cboxes[i]。选中=真;
}
}
我在for语句中的“cboxes”下得到一条红线,表示“当前上下文中不存在名称“cboxes” 如果我一次只使用一个,它工作得很好,所以我的数组应该不会有问题。一次工作一个,如下所示:

  public void Cycle()
    {            
        CheckBox[] cboxes = relayRow.CheckBoxes;

        for (int i = 0; i < 16; i++)
        {
            cboxes[i].Checked = true;
        }
    }
公共作废周期()
{            
复选框[]cboxes=重新启用复选框;
对于(int i=0;i<16;i++)
{
cboxes[i]。选中=真;
}
}

我的布尔“主机”也应该没有问题,因为我在其他地方使用过它,并且它可以按预期工作。我只是想在检查16个数组之间切换。提前感谢。

您只需在
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;
    }
}
公共作废周期()
{
复选框[]cboxes=null;
如果(主机==false)
{
cboxes=重新启用复选框;
}                
else if(host==true)
{
cboxes=relayRow2.复选框;
}
对于(int i=0;i<16;i++)
{            
cboxes[i]。选中=真;
}
}
或者只是

public void Cycle()
{
    CheckBox[] cboxes = host ? relayRow2.CheckBoxes : relayRow.CheckBoxes;
    for (int i = 0; i < 16; i++)
    {            
         cboxes[i].Checked = true;
    }
}
公共作废周期()
{
复选框[]cboxes=host?relayRow 2.复选框:relayRow.复选框;
对于(int i=0;i<16;i++)
{            
cboxes[i]。选中=真;
}
}

您只需在
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;
    }
}
公共作废周期()
{
复选框[]cboxes=null;
如果(主机==false)
{
cboxes=重新启用复选框;
}                
else if(host==true)
{
cboxes=relayRow2.复选框;
}
对于(int i=0;i<16;i++)
{            
cboxes[i]。选中=真;
}
}
或者只是

public void Cycle()
{
    CheckBox[] cboxes = host ? relayRow2.CheckBoxes : relayRow.CheckBoxes;
    for (int i = 0; i < 16; i++)
    {            
         cboxes[i].Checked = true;
    }
}
公共作废周期()
{
复选框[]cboxes=host?relayRow 2.复选框:relayRow.复选框;
对于(int i=0;i<16;i++)
{            
cboxes[i]。选中=真;
}
}

D Stanley的答案略有不同,不确定是否需要使用数组和for循环,这会迫使您硬编码复选框的数量,但这也应该起作用:

  public void Cycle()
    {
        var cboxes = host ? relayRow2.CheckBoxes : relayRow.CheckBoxes;
        cboxes = (from checkBox in cboxes.ToList()
            select new CheckBox { Checked = true}).ToArray();
    }

另外,我没有足够的声望点来评论,否则我只会评论你的答案D Stanley并加上标记(对不起!)

与D Stanley的答案略有不同,不确定你是否需要使用数组和for循环,这会迫使你硬编码复选框的数量,但这也应该起作用:

  public void Cycle()
    {
        var cboxes = host ? relayRow2.CheckBoxes : relayRow.CheckBoxes;
        cboxes = (from checkBox in cboxes.ToList()
            select new CheckBox { Checked = true}).ToArray();
    }
另外,我没有足够的声誉点来评论,否则我只会评论你的答案D Stanley和upticked(对不起!)