2017-08-29 163 views
0

我有一个复选框,当你点击它时,选择所有复选框这里的问题,当未选中任何复选框检查没有删除选择所有我试过这个代码:取消选择全选复选框当一个复选框未选中C#以窗体形式

private void checkBox1_CheckedChanged(object sender, EventArgs e) 
{ 
    if (checkBox1.Checked == false) 
     checkBox9.Checked = false; 
} 

,但是当我检查所有复选框,它清除所有复选框,我想选择选中所有唯一不是所有的复选框

+0

的所有复选框如果'checkBox9'的“全选”复选框 - 你的代码应工作,除非你有其他将它重新设置为“已检查”的事件处理程序,或者检查“错误”复选框,这对于控件使用“deafult”名称时并不罕见 – Fabio

回答

1

1 - 添加定时器您的项目。 2 - 在“表单加载”事件中启动计时器。 3 - 创建计时器滴答事件。

4-写这样的代码:

checkBox1.Checked != checkBox2.Checked 
checkBox2.Checked != checkBox1.Checked 
0

虽然你的问题不是很清楚,它可能解决您的问题:

protected void CheckBox1_CheckedChanged(object sender, EventArgs e) 
    { 
     if (!CheckBox1.Checked) 
     { 
      if (CheckBox2.Checked) 
      { 
       CheckBox2.Checked = false; 

      } 
     } 
} 
0

最干净的这样做的方法是迭代的所有复选框。这将检查所有的复选框窗体上当您检查1.并且还unchceck如果没有选择1.

// Register the checked changed event and point all to the same event handler 
checkBox1.CheckedChanged += CheckBox_CheckedChanged; 
checkBox2.CheckedChanged += CheckBox_CheckedChanged; 
checkBox3.CheckedChanged += CheckBox_CheckedChanged; 

private void CheckBox_CheckedChanged(object sender, EventArgs e) 
{ 
    if (sender is CheckBox == false) return; 

    var currentCheckBox = (CheckBox) sender; 

    foreach (var checkBox in this.Controls.OfType<CheckBox>().Where(a => a != currentCheckBox)) 
    { 
     checkBox.Checked = currentCheckBox.Checked; 
    } 
}