比较复选框项和数组

本文关键字:数组 复选框 比较 | 更新日期: 2023-09-27 18:07:12

所以,我有一个checklistbox,包含字符串值,如:

  • asdf - 432 - qwer vcxz
  • rewq - 123 - qwer vcxz
  • rety - 323 - qw65 vcyt
  • kjhf - 232 - ouyy bjkl

我有一个数组(onlineVaults),其中包含一些相同的值,在checklistbox,如:

  • rety - 323 - qw65 vcyt
  • asdf - 432 - qwer vcxz

现在我只想检查数组中checklistbox中的那些值。

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