如何以编程方式检查C#中checkedlistbox中的项目?

我有一个checkedlistbox,我想自动勾选其中的一个项目。

CheckedItems集合不允许你添加东西。

有什么build议么?

你需要调用SetItemChecked和相关的项目。

CheckedListBox.ObjectCollection的文档有一个例子,它检查集合中的每一个其他项目。

这是你如何select/勾选或取消select/一次不勾选所有的项目:

private void SelectAllCheckBoxes(bool CheckThem) { for (int i = 0; i <= (checkedListBox1.Items.Count - 1); i++) { if (CheckThem) { checkedListBox1.SetItemCheckState(i, CheckState.Checked); } else { checkedListBox1.SetItemCheckState(i, CheckState.Unchecked); } } } 

在我的程序中,我使用了以下技巧:

 CheckedListBox.SetItemChecked(CheckedListBox.Items.IndexOf(Item),true); 

事情是如何工作的:
SetItemChecked(int index,bool value)是在特定项目中设置精确检查状态的方法。 你必须指定要检查的项目的索引( 使用IndexOf方法,作为参数指定项目的文本 )和检查状态( true表示检查项目,未选中false )。
此方法遍历CheckedListBox中的所有项目,并检查( 或取消选中 )具有指定索引的项目。
例如,我的代码的一小段 – FOREACH循环遍历指定的程序名,并且如果程序包含在CheckedLitBox( CLB … )中,则检查它:

 string[] ProgramNames = sel_item.SubItems[2].Text.Split(';'); foreach (string Program in ProgramNames) { if (edit_mux.CLB_ContainedPrograms.Items.Contains(Program)) edit_mux.CLB_ContainedPrograms.SetItemChecked(edit_mux.CLB_ContainedPrograms.Items.IndexOf(Program), true); } 

假设你想要点击一个button来检查项目。

 private void button1_Click(object sender, EventArgs e) { checkedListBox1.SetItemChecked(itemIndex, true); } 

其中itemIndex是要检查的项目的索引,它从0开始。

使用:

 string[] aa = new string[] {"adil ", "nenooo", "mele naj"}; foreach (string a in aa) { checkedListBox1.Items.Add(a); } 

现在编码你想检查所有的地方:

 private void button5_Click(object sender, EventArgs e) { for(int a=0; a<checkedListBox1.Items.Count; a++) checkedListBox1.SetItemChecked(a, true); } 

取消全部选中:

 private void button_Click(object sender, EventArgs e) { for(int a=0; a<checkedListBox1.Items.Count; a++) checkedListBox1.SetItemChecked(a, false); } 

我使用扩展名:

 public static class CheckedListBoxExtension { public static void CheckAll(this CheckedListBox listbox) { Check(listbox, true); } public static void UncheckAll(this CheckedListBox listbox) { Check(listbox, false); } private static void Check(this CheckedListBox listbox, bool check) { Enumerable.Range(0, listbox.Items.Count).ToList().ForEach(x => listbox.SetItemChecked(x, check)); } }