我正在处理Windows表单应用程序。
我想在checkedlistbox中check/uncheck
所有复选框。
我正在使用以下代码动态生成复选框。
var CheckCollection = new List<CheckedBoxFiller>();
foreach (DataRow dr in dt.Rows)
CheckCollection.Add(new CheckedBoxFiller {
Text = dr["ImageName"].ToString(),
Value = dr["ImageId"].ToString()
});
chklbEvidenceTags.DataSource = CheckCollection;
chklbEvidenceTags.DisplayMember = "Text";
chklbEvidenceTags.ValueMember = "Value";
这是CheckboxFiller类
private class CheckedBoxFiller {
public string Text { get; set; }
public string Value { get; set; }
}
现在我要check/Uncheck
all checkboxes
。我怎样才能做到这一点?
任何帮助都会有用。
答案 0 :(得分:14)
我找到了解决方案。
for (int i = 0; i < chklistbox.Items.Count; i++)
chklistbox.SetItemCheckState(i, (state ? CheckState.Checked : CheckState.Unchecked));
state
的值为boolen
。
答案 1 :(得分:10)
如果您有一个大型项目列表,这种方法对于取消选中项目可能会更有效。它要求您只循环实际检查的项目:
private void UncheckAllItems()
{
while (chklistbox.CheckedIndices.Count > 0)
chklistbox.SetItemChecked(chklistbox.CheckedIndices[0], false);
}
如果您在整个项目中使用多个CheckedListBox控件并希望更进一步,可以将其添加为扩展方法:
public static class AppExtensions
{
public static void UncheckAllItems(this System.Windows.Forms.CheckedListBox clb)
{
while (clb.CheckedIndices.Count > 0)
clb.SetItemChecked(clb.CheckedIndices[0], false);
}
}
扩展方法调用:
chklistbox.UncheckAllItems();
答案 2 :(得分:0)
选中/取消选中代码下面写的所有列表项:
if (checkBox1.Checked)
{
for (int i = 0; i < chkboxlst.Items.Count; i++)
{
chkboxlst.SetItemChecked(i, true);
}
}
else
{
for (int i = 0; i < chkboxlst.Items.Count; i++)
{
chkboxlst.SetItemChecked(i, false);
}
}
答案 3 :(得分:-3)
取消选中/检查所有列表项目执行以下代码:
boolean state =false;//False->Uncheck,true->Check
for (int i = 0; i < chklistbox.Items.Count; i++)
chklistbox.SetItemCheckState(i, (state ? CheckState.Checked : CheckState.Unchecked));