如何检索在所有表单中选中的复选框列表?

How to retrieve a list of checkboxes selected among all those of the form?

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

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

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

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

类似于:

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

然后限制用户只能选择 3 个,或者任意多个?

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

   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
});

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

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

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