如何根据键值设置在复选框列表中选中的项目?

时间:2019-07-10 06:58:59

标签: c# winforms checkedlistbox

我有一个checklistbox,我将其值绑定到Id和Values,当检查项目时,我将ID保存在数据库中,当表单加载时,我希望根据ID检查CheckedListbox项目。

我只能基于如下所示的索引绑定检查表框,我看到的另一种选择是获取值的索引并对其进行检查,但这在我的情况下不起作用,因为我只有检查表框的ID需要检查的项目。

int index = checkedListBox1.Items.IndexOf("42");
checkedListBox1.SetItemChecked(index , true);

这就是我绑定值的方式

ccBoxitem item = new ccBoxitem(a.name, a.id);
checkedListBox1.items.add(item);
public ccBoxitem (string name, int val)
{
    this.name = name;
    this.val = val;
}

如何根据ID来检查checkedlistbox

2 个答案:

答案 0 :(得分:0)

例如,您可以遍历所有物品,然后检查所需物品:

 private void CheckItem(int id)
 {
     for (int i = 0; i < checkedListBox1.Items.Count; i++)
     {
         if ((checkedListBox1.Items[i] as ccBoxitem)?.val == id)
         {
             checkedListBox1.SetItemChecked(i, true);
         }
     }
 }

用法:

var id = GetId();
CheckItem(id);

答案 1 :(得分:0)

您可以使用下面的方法,它将首先按其值选择所需的项目,然后检查所选的项目

void CheckItem(CheckedListBox checkedListBox, int id)
{
    checkedListBox.SelectedItem = checkedListBox.Items.OfType<ccBoxitem>().ToList().FirstOrDefault(i => i.val == id);
    checkedListBox.SetItemChecked(checkedListBox.SelectedIndex, true);
    checkedListBox.SelectedItem = null; // To clear selection if needed
}

您可以按以下方式调用它

CheckItem(checkedListBox1, 3);

CheckItem(checkedListBox1, 6);