2

所以,我有一个包含字符串值的复选框,例如:

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

我有一个数组(onlineVaults),其中包含一些与复选框中相同的值,例如:

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

我已经尝试过像这样弄清楚,但它不起作用。它只检查一个值而不检查其他值。我该做什么?

4

1 回答 1

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);        
}
于 2015-08-10T11:30:18.260 回答