c#根据字符串或字符串列表检查预先填充的Checklistbox项

时间:2018-04-28 09:54:37

标签: c# checklistbox

我们在Visual Studio 2017中有一个c#Winforms项目。 加载表单时,它会使用设置中的值填充checklistbox控件。

默认情况下,核对表列表中的所有项目均未选中。

稍后使用另一个按钮,我们会得到一个以逗号分隔的字符串(例如,apple,oranges,kiwies)

我们想要做的是,如果项目中的项目存在于我们获得的字符串中,那么它将被检查。

任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

您可以使用SetItemCheckState内的项目索引,使用checkListBox.Items方法检查checkListBox的项目。 您可以使用checkListBox.Items方法检查IndexOf中是否存在字符串,该方法返回与字符串匹配的项的索引。 如果checkListBox.Items包含字符串,则会选中所需的复选框,否则IndexOf将返回-1并且不会进行任何检查。这是一个例子:

private void button1_Click(object sender, EventArgs e)
{
    string fruit = "apple, oranges, kiwies";
    string[] fruitArr = fruit.Split(',').Select(x=>x.Trim()).ToArray();
    int index = 0;
    foreach (var item in fruitArr)
    {
        index = checkedListBox1.Items.Cast<string>().ToList().IndexOf(item);

        if (index > -1)
        {
            checkedListBox1.SetItemCheckState(index, CheckState.Checked);
        }
    }
}

填充checkListBox

private void Form1_Load(object sender, EventArgs e)
{
    List<string> fruitList = new List<string>() { "pineapple","banana","apple","oranges"  };
    foreach (var fruit in fruitList)
    {
        checkedListBox1.Items.Add(fruit);
    }
}