所以,我有一个包含如下字符串值的 list 框:
- asdf-432-qwer-vcxz
- rewq-123-qwer-vcxz
- rety-323-qw65-vcyt
- kjhf-232-ouyy-bjkl
- ...
我有一个数组(onlineVaults),其中包含一些与 list 框中相同的值,例如:
- rety-323-qw65-vcyt
- asdf-432-qwer-vcxz
现在我只想检查检查列表框中数组中的那些值。其他的不要勾选。
for (int i = 0; i < checklistbox.Items.Count; i++)
{
if (onlineVaults.Contains(checklistbox.Items[i]))
{
checklistbox.SetItemChecked(i, true);
}
}
我试过这样弄明白,但它不起作用。它只检查一个值,不检查其他任何值。我该怎么办?
最佳答案
试试这个
var checklistbox = new List<string>
{
"asdf-432-qwer-vcxz",
"rewq-123-qwer-vcxz",
"rety-323-qw65-vcyt",
"kjhf-232-ouyy-bjkl"
};
var onlineVaults = new List<string>
{
"rety-323-qw65-vcyt",
"asdf-432-qwer-vcxz"
};
for (int i = 0; i < checklistbox.Items.Count; i++)
{
checklistbox.SetItemChecked(i, onlineVaults.Contains(checklistbox.Items[i]));
}
编辑:
要忽略大小写和修剪值,试试这个
for (int i = 0; i < checklistbox.Items.Count; i++)
{
checklistbox.SetItemChecked(i, IsValueExist(onlineVaults, checklistbox.Items[i]));
}
private bool IsValueExist(List<string> list, string value)
{
return list.Any(x => string.Compare(x.Trim(), value.Trim(), StringComparison.InvariantCultureIgnoreCase) == 0);
}
关于c# - 将 list 框项目与数组进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31918241/