我制作的程序必须计算检查了多少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());
}
答案 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
时增加计数,现在会在您的问题中反映出来。未能执行该检查是原始代码中的错误。