如何循环通过一个复选框列表,找到已检查和未检查的内容

时间:2008-12-27 21:46:54

标签: c# .net checkboxlist

我正在尝试循环复选框列表中的项目。如果选中它,我想设置1个值。如果没有,我想设置另一个值。我正在使用下面但它只给我检查项目:

foreach (DataRowView myRow in clbIncludes.CheckedItems)
{
    MarkVehicle(myRow);
}

TIA!

6 个答案:

答案 0 :(得分:32)

这将给出一个选定的

列表
List<ListItem> items =  checkboxlist.Items.Cast<ListItem>().Where(n => n.Selected).ToList();

这将给出所选框的值列表(如果需要,则更改文本的值):

var values =  checkboxlist.Items.Cast<ListItem>().Where(n => n.Selected).Select(n => n.Value ).ToList()

答案 1 :(得分:26)

for (int i = 0; i < clbIncludes.Items.Count; i++)
  if (clbIncludes.GetItemChecked(i))
    // Do selected stuff
  else
    // Do unselected stuff

如果检查处于不确定状态,则仍将返回true。您可能想要替换

if (clbIncludes.GetItemChecked(i))

if (clbIncludes.GetItemCheckState(i) == CheckState.Checked)

如果您只想包含实际检查的项目。

答案 2 :(得分:22)

尝试这样的事情:

foreach (ListItem listItem in clbIncludes.Items)
{
    if (listItem.Selected) { 
        //do some work 
    }
    else { 
        //do something else 
    }
}

答案 3 :(得分:2)

我认为最好的方法是使用CheckedItems

 foreach (DataRowView objDataRowView in CheckBoxList.CheckedItems)
 {
     // use objDataRowView as you wish                
 }

答案 4 :(得分:1)

检查comboxlist.Items[i]

中每个索引的使用循环
bool CheckedOrUnchecked= comboxlist.CheckedItems.Contains(comboxlist.Items[0]);

我认为它解决了你的目的

答案 5 :(得分:0)

使用CheckBoxList的GetItemChecked或GetItemCheckState方法查明某个项目是否被其索引检查。