c# - 复选框条件

标签 c#

我的问题很简单,但我找不到任何方法。

我有几个复选框,只有当 2 个或更多复选框被选中时我才想运行 void

private void Button1_Click(object sender, EventArgs e)
{

      if (!checkbox1.Checked && !checkbox2.Checked && !checkbox3.Checked &&     !checkbox4.Checked && !checkbox5.Checked)
      {
       Messagebox.Show("Select 2 checkbox");
       return;
      }
       else
      {
       //some action
      }
}

是我用来确保选中一个复选框的技巧。但我想对 2 个及更多复选框执行相同的操作。

Ps: 我不能使用 private void checkBox2_CheckedChanged() ,我需要使用我的 button1 事件。

最佳答案

您确实可以像那样计算选中复选框的数量:

int count = 0;
if (checkbox1.Checked) count += 1;
if (checkbox2.Checked) count += 1;
if (checkbox3.Checked) count += 1;
if (checkbox4.Checked) count += 1;

if (count < 2)
{
    Messagebox.Show("Select 2 checkbox");    
    return;
}

或者您可以将所有相关的复选框放在一个数组中并执行此操作。

CheckBox[] checkboxes = new [] { checkbox1, checkbox2, checkbox3, checkbox4 };
if (checkboxes.Count(cb => cb.Checked) < 2)
{
    Messagebox.Show("Select 2 checkbox");    
    return;
}

第二个版本很容易扩展为更多的复选框,只需将它们添加到数组即可。


如果表单上的所有复选框都算在内,您可以使用

if(Controls.OfType<CheckBox>().Count(cb => cb.Checked) < 2)
{
    // ....
}

关于c# - 复选框条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37791275/

相关文章:

c# - 为什么我会收到 "$ is not defined"错误?

c# - 如何不从 linq 查询返回 {ModuleName = Admin}?

c# - 如何在 C# 中记录输入 (keyListener)

c# - Azure API 身份验证

c# - .net 上的 PDF 查看器

C# 如何取消订阅给定事件的所有事件处理程序?

c# - 验证 base64 编码图像 .NET 核心

c# - 如何将控制台屏幕记录到文本文件中?

c# - 非泛型类型 'IdentityUser' 不能与类型参数一起使用

c# - 最佳输出字典