C # / WinForms: установить элементы CheckedListBox, которые содержат данные из строки / массива - PullRequest
0 голосов
/ 09 ноября 2010

Есть ли способ определить, содержат ли элементы моего флажка списка данные, поступающие из строки / массива?

Мое текстовое поле содержит следующее:

txtActivities.Text = "ABC, DEF";

Мой флажок (содержит следующее)

  • ABC
  • DEF
  • GHI
  • JKL

Что я хочу сделать, это: (1)Разделите «действия» на массив:

string[] tokens = txtActivities.ToString().Split(',');

и (2) попытайтесь «проверить» элементы, найденные в моем проверенном списке (cListActivities), на основе моего текстового поля

for (int i = 0; i < frm.clistActivities.Items.Count; i++){

if (frm.clistActivities.Items[i].ToString().Contains(tokens)) //error?
    {
    frm.clistActivities.SetItemChecked(i); // not working
    }}

Вывод: Пункты ABC и DEF должны быть проверены.

Есть предложения?

Ответы [ 2 ]

2 голосов
/ 09 ноября 2010

Вам необходимо проверить, содержат ли токены элемент, затем установите SetItemChecked на true.

Другими словами,

if (Array.IndexOf(tokens, frm.clistActivities.Items[i].ToString() >= 0)
     frm.clistActivities.SetItemChecked(i, true);
1 голос
/ 09 ноября 2010

У вас есть пробел между запятой и D.

Попробуйте это:

"ABC,DEF"

Редактировать: Этот код работал для меня.

  foreach(string strMyString in tokens)
            {   
             this.clistActivites.SetItemChecked(clistActivities.FindStringExact(strMyString), true);
            }
...