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

How to set Item checked in a checkedlistbox based on Key value?

我已将 checkedListbox 的值与 Id 和 Values 绑定在一起,当检查项目时,我将 Id 保存在数据库中,当加载表单时,我希望根据 Id 检查 checkedListbox 项目

我只能根据索引绑定检查列表框,如下所示,我看到的另一种选择是获取值的索引并检查它,但这在我的情况下不起作用,因为我只有 ID 的需要检查的checkedlistbox项。

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

例如,您可以循环浏览您的项目,然后检查您想要的项目:

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

您可以使用下面的方法,它将 select 需要的项目首先按其值检查 selected 项目

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