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

Har*_*dik 9 c# winforms

我正在使用Windows窗体应用程序.我想要check/uncheck在checkedlistbox中的所有复选框.

我正在使用以下代码动态生成复选框.

    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";
Run Code Online (Sandbox Code Playgroud)

这是CheckboxFiller类

private class CheckedBoxFiller {
    public string Text { get; set; }
    public string Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在我想check/Uncheck all checkboxes.我怎样才能做到这一点?

任何帮助都会有用.

Har*_*dik 17

我找到了解决方案

 for (int i = 0; i < chklistbox.Items.Count; i++)
      chklistbox.SetItemCheckState(i, (state ? CheckState.Checked : CheckState.Unchecked));
Run Code Online (Sandbox Code Playgroud)

stateboolen有价值的.


brs*_*fan 10

如果您有一个大项目列表,这种方法对于取消选中项目可能会更有效.它要求您只循环实际检查的项目:

    private void UncheckAllItems()
    {
        while (chklistbox.CheckedIndices.Count > 0)
            chklistbox.SetItemChecked(chklistbox.CheckedIndices[0], false);
    }
Run Code Online (Sandbox Code Playgroud)

如果您在整个项目中使用多个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);
        }
    }
Run Code Online (Sandbox Code Playgroud)

扩展方法调用:

    chklistbox.UncheckAllItems();
Run Code Online (Sandbox Code Playgroud)


Anj*_*ant 6

选中/取消选中下面代码编写的所有列表项:

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);
        }
    }
Run Code Online (Sandbox Code Playgroud)