【问题标题】:How to retrieve a list of checkboxes selected among all those of the form?如何检索在所有表单中选择的复选框列表?
【发布时间】:2021-10-22 07:23:54
【问题描述】:

我正在处理的 GUI 上有大约 20 个复选框,根据选中的复选框确定我需要的输入。

我知道如何检查复选框是否被选中,并且可以通过这种方式确定输入。

但我不想对所有 20 多个复选框都这样做。

有没有办法获得选中的复选框?

类似:

string[] ports = new string[3];
ports[] = list_of_checkboxs_that_are_checked;

然后将用户限制为只选择 3 个或多个?

【问题讨论】:

标签: c# winforms checkbox subset checked


【解决方案1】:

您可以遍历它们并迭代表单上的控件。

   foreach(Control c in this.Controls)
   {
      if(c is CheckBox)
      {
         // Do stuff here/logic
      }
   }

或者做一个更 LINQ/Lamba-ish 类型的方法

var checkList = YourForm.Controls.OfType<CheckBox>().Where(x => x.Checked).ToList();


checkList.ForEach(x => {
    //Do stuff  here
});

【讨论】:

    【解决方案2】:

    假设您将所有复选框都放在同一个容器中(表单、面板、组框?),那么您可以简单地使用 Linq 表达式来检索所有选中的复选框,并将检索限制为仅前三个-

    var checks = YourForm.Controls.OfType<CheckBox>().Where(x => x.Checked).Take(3);
    foreach(CheckBox chk in checks)
    {
        .....
    }
    

    当然,如果您的复选框位于另一种容器中,您应该使用容器名称检查 YourForm 表单的占位符。

    【讨论】:

      猜你喜欢
      • 2013-01-27
      • 1970-01-01
      • 2010-10-30
      • 1970-01-01
      • 1970-01-01
      • 2015-11-04
      • 2019-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多