如何以编程方式设置winforms Checkedlistbox中所有项目的选中状态?

时间:2012-10-25 05:21:02

标签: c# winforms

我正在处理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。我怎样才能做到这一点?

任何帮助都会有用。

4 个答案:

答案 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));