如果选中一个或多个复选框,如何禁用其他复选框

时间:2015-09-22 04:01:39

标签: c#

我正在做一个c#windows表单应用程序。现在,我有一个复选框列表,我把它放在一个数组中。我有一个循环来遍历复选框列表来做事情。我想知道有没有办法禁用未检查的其他复选框?这是我的代码,将不胜感激。谢谢。例如,假设选中复选框1和6,则禁用复选框2,3,4,5。

代码:

CheckBox[] myCheckBoxArray = new CheckBox[6];

myCheckBoxArray [0] = checkBox1;
myCheckBoxArray [1] = checkBox2;
myCheckBoxArray [2] = checkBox3;
myCheckBoxArray [3] = checkBox4;
myCheckBoxArray [4] = checkBox5;
myCheckBoxArray [5] = checkBox6;

foreach (CheckBox checkBox in myCheckBoxArray )
{
    if (checkBox .Text == className && comboBox1.SelectedIndex == index) 
    {
        checkBox .Checked = true;
    }
}

4 个答案:

答案 0 :(得分:1)

此代码将执行:

 public void DisableAllUnchecked(IEnumerable<CheckBox> items)
 {
      items.ForEach(m=> m.Enabled = !m.Checked);
 }

示例代码:

 DisableAllUnckeched(myCheckBoxArray);

或者,如果您不想创建方法,可以在一行中完成:

myCheckBoxArray.ToList().ForEach(m=> m.Enabled = !m.Checked);

答案 1 :(得分:0)

您可以修改foreach循环,如下所示:

foreach(CheckBox checkBox in myCheckBoxArray) 
{   
    if (checkBox.Text == className && comboBox1.SelectedIndex == index) 
    {
        checkBox.Checked = true;
    } 
    else 
    {
        checkBox.Checked = false;
        checkBox.Enabled = false;
    }
} 

答案 2 :(得分:0)

//put an else after your if    
foreach (CheckBox checkBox in myCheckBoxArray )
{    
    if (checkBox .Text == className && comboBox1.SelectedIndex == index) {    
        checkBox .Checked = true;        
    }
    else
    {
         checkBox .Enabled= false;
    }
}

答案 3 :(得分:-1)

这可以解决问题

foreach(CheckBox checkBox in myCheckBoxArray)
{
    if(checkBox.IsChecked==false)
    {
        checkBox.IsEnabled = false;
    }
}