我有一个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);
}
答案 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"};