遍历所有未选中的复选框(foreach 或 for-loop,Windows 形式)

Loop through all unchecked Checkboxes (foreach or for-loop, Windows Forms)

我想压缩可执行代码段(见下文)。如何使用 foreach 或 for-loop 执行此操作?

private void UncheckCheckBox() 
{
   CheckBox[] Three = new [] 
   {
     checkBox1,
     checkBox2,
     checkBox3
   };

   checkBox1.Tag = "str1";
   checkBox2.Tag = "str2";
   checkBox3.Tag = "str3";

   if (!checkBox1.Checked) 
   {
     listBox4.Items.Remove(checkBox1.Tag);
   }
   if (!checkBox2.Checked) 
   {
     listBox4.Items.Remove(checkBox2.Tag);
   }
   if (!checkBox3.Checked) 
   {
     listBox4.Items.Remove(checkBox3.Tag);
   }
}

就这么简单:

foreach(CheckBox cbx in Three)
{
    if(! cbx.Checked)
        listBox4.Items.Remove(cbx.Tag);
}

不用数组也可以。控件集合应该有你的复选框:

foreach (CheckBox checkBox in Controls.AsQueryable().OfType<CheckBox>().Where(c => !c.Checked).ToArray())
    listBox4.Items.Remove(checkBox.Tag);

或使用您现有的阵列:

foreach (CheckBox checkBox in Three.Where(c => !c.Checked).ToArray())
    listBox4.Items.Remove(checkBox.Tag);