如何确定多个复选框状态

时间:2013-07-31 17:15:38

标签: c#

 UCmultiple uc = new UCmultiple(); //here UCmultiple is User Control  it contains checkbox
 string strText; 

  if (uc.checkBox1.Checked == true)
    {
     strText = checkBox1. Text;
    }

如果复选框位于用户控件中,如何知道是否选中多个复选框?

3 个答案:

答案 0 :(得分:1)

要了解检查了多少个复选框,您可以使用

 uc.Controls.OfType<CheckBox>().Where(x => x.Checked).Count();

如果count大于1,则检查多个..

如果您只检查几个复选框,那么 更好地检查它们

if(firstCheckbox.Checked && secondCheckbox.Checked)

答案 1 :(得分:0)

您可以使用AND&&)逻辑运算符。它执行两个逻辑语句(但是,如果第一个是假的,它将不会检查下一个)

if (uc.checkBox1.Checked && uc.checkBox2.Checked)
    MessageBox.Show("clicked");

您还可以使用UserControl遍历LINQ中的每个CheckBox控件,并测试是否全部选中。如果复选框的数量

//If the amount of checkboxes is == to the amount of checked checkboxes
if (uc.Controls.OfType<CheckBox>().All(x => x.Checked))
MessageBox.Show("clicked");

您也可以使用

获取已选中复选框的数量
uc.Controls.OfType<CheckBox>().Where(x => x.Checked).Count()

答案 2 :(得分:0)

我不会窥视用户控件的控件 - 这使得很难改变 用户控制以后。

我会向UCMultiple添加一个属性,以指示检查了多少(或哪些)。如果您只关心是否检查了ALL和/或检查了多少,它将看起来像这样:

public bool AllAreChecked
{
    return uc.Controls.OfType<CheckBox>().All(x => x.Checked);
}
public int NumberChecked
{
    return uc.Controls.OfType<CheckBox>().Count(x => x.Checked);
}

如果您想了解特定的复选框,那么就没有通用解决方案 - 我们需要了解有关控件的更多信息 - 如何生成复选框?每个复选框都有一些外在含义吗?