我正在做一个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;
}
}
答案 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;
}
}