Флажки в CheckedListBox из предопределенного списка строк - PullRequest
1 голос
/ 11 февраля 2012

У меня есть selectedListBox (c #), и я хотел бы, чтобы некоторые из полей в нем были отмечены при открытии окна. У меня есть List<string>, который содержит значения, и если значение в списке совпадает со значением в CheckedListBox, я хочу его проверить!

Я могу проверить все ящики, но у меня проблемы со следующей частью. Как проверить, равно ли значение в списке любому из значений в списке?

Вот что у меня есть:

//List of all the strings that I want to check
List<string> categories = new List<string>();
categories.Add("Cat 1");
categories.Add("Cat 2");
categories.Add("Cat 2");

//clBCategory is the CheckedListBox
for (int i = 0; i < clBCategory.Items.Count; i++)
     {
          clBCategory.SetItemChecked(i, true);
     } 

Ответы [ 2 ]

2 голосов
/ 11 февраля 2012

CheckedListBox - это, по сути, набор с ошибкой типа object объектов.Приведенный ниже код довольно грубый, но его должно быть достаточно для начала работы:

List<string> categories = new List<sting>();
categories.Add("Cat 1");
categories.Add("Cat 2");
categories.Add("Cat 3");

for (int i = 0; i < clBCategory.Items.Count; i++)
{
    if (categories.Contains(clBCategory.Items[i].ToString()))
        clBCategory.SetItemChecked(i, true);
} 
0 голосов
/ 11 февраля 2012

1) Вы можете сделать что-то вроде этого,

      List<string> categories = new List<sting>();
      categories.Add("Cat 1");
      categories.Add("Cat 2");
      categories.Add("Cat 3");
      int index;

      //Instead of traversing checkedListBox1 I have traversed List
      foreach (string str in list)
      {
       index = checkedListBox1.Items.IndexOf(str);
       if (index < 0) continue;
       if (str == checkedListBox1.Items[index].ToString())
        {
         checkedListBox1.SetItemChecked(index, true);
        }
      }

Я проверил это, и он прекрасно работает:)

2) Еще больше я бырекомендуем использовать инициализатор коллекции вот так

      list = new List<string>() {"Cat 1","Cat 2","Cat 9"};
...