从预定义的字符串列表中选中CheckedListBox中的框

时间:2012-02-11 17:19:39

标签: c# winforms checkedlistbox

我有一个checkedListBox(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 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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"};