C# 使用Linq取消选中所有复选框

C# 使用Linq取消选中所有复选框,c#,linq,checkbox,C#,Linq,Checkbox,我有三个复选框,选择后可以在列表框中输入(见下文)。如果要更改复选框的状态(未选中),如何再次从列表框中删除该条目?非常感谢您的帮助 private CheckBox[] checkboxes; private string[] cbx; checkboxes = new[] {checkBox1, checkBox2, checkBox3}; checkBox1.Tag = "string1"; checkBox2.Tag = "string2"

我有三个复选框,选择后可以在列表框中输入(见下文)。如果要更改复选框的状态(未选中),如何再次从列表框中删除该条目?非常感谢您的帮助

private CheckBox[] checkboxes;
private string[] cbx;

checkboxes = new[] {checkBox1, checkBox2, checkBox3};

checkBox1.Tag =  "string1"; 
checkBox2.Tag =  "string2";
checkBox3.Tag =  "string3"; 

foreach (var checky in checkboxes)
{
   checky.CheckedChanged += CheckBox_CheckedChanged;
}

private void CheckBox_CheckedChanged(object sender, EventArgs e)
{
   cbx = checkboxes.Where(checky => checky.Checked)
  .Select(checky => checky.Tag)
  .Cast<string>()
  .ToArray();

  listBox4.Items.AddRange(cbx);

 }





private复选框[]复选框;
私有字符串[]cbx;
checkbox=new[]{checkBox1,checkBox2,checkBox3};
复选框1.Tag=“string1”;
复选框2.Tag=“string2”;
复选框3.Tag=“string3”;
foreach(复选框中的var checky)
{
checky.CheckedChanged+=复选框\u CheckedChanged;
}
私有无效复选框\u CheckedChanged(对象发送方,事件参数e)
{
cbx=复选框。其中(checky=>checky.Checked)
.Select(checky=>checky.Tag)
.Cast()
.ToArray();
列表框4.Items.AddRange(cbx);
}

一种方法是在将选中的项目添加到列表框之前,删除列表框中的所有内容:

private void CheckBox_CheckedChanged(object sender, EventArgs e)
{
    cbx = checkboxes.Where(checky => checky.Checked)
        .Select(checky => checky.Tag)
        .Cast<string>()
        .ToArray();

    listBox4.Items.Clear(); // here!
    listBox4.Items.AddRange(cbx);
}
private void CheckBox\u CheckedChanged(对象发送方,事件参数e)
{
cbx=复选框。其中(checky=>checky.Checked)
.Select(checky=>checky.Tag)
.Cast()
.ToArray();
listBox4.Items.Clear();//这里!
列表框4.Items.AddRange(cbx);
}
任何时候选中任何复选框,都会删除列表框中的所有内容,无论是否选中。然后获取当前选中的项目并将其添加到列表框中