Наконец выяснилось, что это Ошибка , представленная MS.
Это хорошо объяснено здесь.
Вопрос легко воспроизвести. Просто спрячь и покажи базу данных
CheckedListBox и вы заметите, как
ранее проверенные предметы получают
бесконтрольно.
CheckedListBox SetItemChecked метод не работает
Итак, мы должны найти обходной путь ... Я попробовал следующий способ, он работает хорошо ...
В том месте, где я звонил , проверяя пунктов, которые я добавил после ... Я добавляю то, что мне нужно, чтобы проверить Метка элемента управления.
if (!string.IsNullOrEmpty(search.Languages))
{
clbLang.Tag = search.Languages;
}
Затем следующий код в событии этого элемента управления «VisibleChanged ()».
private void clbLang_VisibleChanged(object sender, EventArgs e)
{
string lngs = clbLang.Tag as string;
if (!string.IsNullOrEmpty(lngs))
{
string[] langs = lngs.Split(',');
foreach (string lang in langs)
{
int j = 0;
foreach (DataRowView row in clbLang.Items)
{
if (row != null)
{
string lng = row[1] as string;
if (lng.Trim() == lang)
{
clbLang.SetItemChecked(j, true);
break;
}
}
j++;
}
}
}
}
Это хорошо работает для меня, надеюсь, это принесет вам пользу ...