web-dev-qa-db-ja.com

チェックリストを介してループし、チェックされているものとチェックされていないものを見つける方法

チェックボックスリストの項目をループしようとしています。チェックされている場合、1つの値を設定します。そうでない場合は、別の値を設定します。私は以下を使用していましたが、チェックされたアイテムのみを提供します:

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

TIA!

21
Bill Martin
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)

実際にチェックされたアイテムのみを含めたい場合。

26
Robert C. Barth

これにより、選択されたリストが表示されます

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()
32
Contra

次のようなものを試してください:

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

これを行う最良の方法はCheckedItemsを使用することだと思います:

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

comboxlist.Items[i]の各インデックスにループを使用してチェックします

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

私はそれがあなたの目的を解決すると思う

1
sameer sharma

CheckBoxListのGetItemCheckedまたはGetItemCheckStateメソッドを使用して、インデックスによってアイテムがチェックされているかどうかを調べます。

0
devio