从列表或数据集中设置checkedlistbox中的选中项

我有一个CheckedListBox,我想检查另一个列表中的所有项目。 此代码不起作用,因为CheckedItems属性是只读的并且类型不匹配,但它可以最好地了解我想要做什么。

checkedListBox1.DataSource = DataSetSelectAll().Tables[0]; checkedListBox1.ValueMember = "id_table"; checkedListBox1.DisplayMember = "name"; List list = MyCheckedList(); checkedListBox1.CheckedItems = list; 

我知道这是错的,但不知道如何更好地解释它。

它不可能像这样设置(检查)多个项目,checkedListBox1.CheckedItems = list;

你可以更好地使用for循环

 List list = MyCheckedList(); for (int count = 0; count < checkedListBox1.Items.Count; count++) { if (list.Contains(checkedListBox1.Items[count].ToString())) { checkedListBox1.SetItemChecked(count, true); } } 

安迪的回答是正确的,但我有一个更简单的解决方案。 我的解决方案适用于Windows应用程序

 DataTable dt = MyCheckedList(); foreach (DataRow dr in dt.Rows) { for (int i = 0; i < checkedListBox1.Items.Count; i++) { if (dr["valueMember"].ToString() == ((DataRowView)checkedListBox1.Items[i])[0].ToString()) { checkedListBox1.SetItemChecked(i, true); } } } 

注意: dt必须填充一个包含所有checkedList值的dataTable。