将checklistbox项目与数组进行比较

时间:2015-08-10 11:22:05

标签: c# arrays winforms for-loop checklistbox

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

  • ASDF-432-QWER-vcxz
  • rewq-123-QWER-vcxz
  • 勒蒂-323-qw65-vcyt
  • kjhf-232-ouyy-bjkl
  • ...

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

  • 勒蒂-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);
    }
}

我试过这样想,但它不起作用。它只检查一个值而不检查任何其他值。我应该怎么做?

1 个答案:

答案 0 :(得分:1)

试试这个

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