在GroupBox中检查了多少个CheckBox?

时间:2016-08-11 21:07:23

标签: c# winforms

我制作的程序必须计算检查了多少CheckBox个控件,仅在GroupBox中。

我尝试了很多不同的方法,但我无法让它发挥作用。

如何做到这一点?

// This is one of the many things I tried...        
public CheckBox rNum;
//This method is used on FormLoad.
public void CreateBoxes()
{
    for (int i = 0; i < 36; i++)
    {
        rNum = new CheckBox();
        rNum.Text = i.ToString();

        //CheckBoxes added to flowLayoutPanel.
        flw.Controls.Add(rNum);
    }   
}

public int count;          
//This method is used on Button Click
public void CountIt()
{
    foreach (CheckBox box in groupBox.Controls.OfType<CheckBox>())
    {
        if (box.Checked)
        {
            count++;
        }
    }    
    MessageBox.Show(count.ToString());
}

2 个答案:

答案 0 :(得分:2)

您可以使用这样的linq查询:

var count = flw.Controls.OfType<CheckBox>().Count(x=>x.Checked);

它返回被检查的flw中CheckBox个控件的计数。

答案 1 :(得分:1)

根据您的评论和对问题的修改,您需要在CheckBoxes中添加FlowLayoutPanel,而不是groupBox。鉴于您的FlowLayoutPanel被称为flw,请执行以下操作:

public void CountIt()
{
    foreach (CheckBox box in flw.Controls.OfType<CheckBox>())
    {
        if (box.Checked)
        {
            count++;
        }
    }

    MessageBox.Show(count.ToString());
}

请注意,我只会在检查CheckBox时增加计数,现在会在您的问题中反映出来。未能执行该检查是原始代码中的错误。