c # Проверять предварительно заполненные элементы списка проверки на основе строки или списка строк - PullRequest
0 голосов
/ 28 апреля 2018

У нас есть проект c # Winforms в Visual studio 2017. Когда форма загружается, она заполняет элемент управления checklist со значениями из настроек.

По умолчанию все элементы внутри флажка сняты.

С помощью другой кнопки позже мы получим строку, разделенную запятыми, например (яблоко, апельсины, киви)

То, что мы хотим сделать, - это если элемент существует в контрольном списке по сравнению со строкой, которую мы получаем, чтобы сделать его проверенным.

Кто-нибудь может помочь с этим?

1 Ответ

0 голосов
/ 28 апреля 2018

Вы можете проверить элемент checkListBox с помощью метода SetItemCheckState, используя индекс элемента внутри checkListBox.Items. Вы можете проверить, существует ли строка в 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);
    }
}
...