C# 如何循环检查复选框列表并查找所需内容';检查了没有检查?

C# 如何循环检查复选框列表并查找所需内容';检查了没有检查?,c#,.net,checkboxlist,C#,.net,Checkboxlist,我正在尝试循环检查复选框列表中的项目。如果选中,我想设置一个值。如果不是,我想设置另一个值。我使用了下面的,但它只给我检查过的项目: foreach (DataRowView myRow in clbIncludes.CheckedItems) { MarkVehicle(myRow); } 使用CheckBoxList的GetItemChecked或GetItemCheckState方法来确定某个项目是否通过其索引进行了检查。请尝试以下操作: foreach (ListItem li

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

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

使用CheckBoxList的GetItemChecked或GetItemCheckState方法来确定某个项目是否通过其索引进行了检查。

请尝试以下操作:

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


如果您只想包括实际选中的项目。

这将给出所选项目的列表

List<ListItem> items =  checkboxlist.Items.Cast<ListItem>().Where(n => n.Selected).ToList();
List items=checkboxlist.items.Cast().Where(n=>n.Selected.ToList();
这将给出所选框值的列表(如果需要,请更改文本值):

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

检查
comboxlist.Items[i]

bool CheckedOrUnchecked= comboxlist.CheckedItems.Contains(comboxlist.Items[0]);

我认为它解决了你的问题

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

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

这是winform。所以,当我尝试引用listitem时,它希望引用web控件的一个元素。我尝试使用listviewitem并获得错误“无法将类型为”System.Data.DataRowView“的对象强制转换为类型为”System.Windows.Forms.listviewitem“。Bill martin如果是winform,请删除标有.net的标记。当我意识到GetItemChecked方法只适用于winforms.asp316:WebForms还是winforms时,我花了一些时间试图弄明白为什么您的解决方案(使用.net)不适用于我?(围绕其各自CheckBoxList控件的API非常不同。)使用它非常有效。如何获取选中复选框的值/值成员?clbIncludes.GetItemChecked(I)对我来说不是有效的方法,但我只是将其替换为clbIncludes.Items[I]。为这两个方法选择EDI get error。。对于第一个解决方案,我得到错误“无法隐式转换类型”System.Collections.Generic.List”为“System.Web.UI.WebControl.ListItem”,对于第二个解决方案,我在运行时得到错误,名称“values”在当前上下文中不存在,我未找到CheckBoxList的CheckedItems属性。
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()
bool CheckedOrUnchecked= comboxlist.CheckedItems.Contains(comboxlist.Items[0]);
 foreach (DataRowView objDataRowView in CheckBoxList.CheckedItems)
 {
     // use objDataRowView as you wish                
 }