Программно проверка контрольного ящика паспорта

StackOverflow https://stackoverflow.com/questions/4654056

  •  09-10-2019
  •  | 
  •  

Вопрос

У меня есть билет «CheckedListbox», мне нужно проверить на нем некоторые элементы. Я пытался со следующим кодом ...

if (!string.IsNullOrEmpty(search.Languages))
        {
            string[] langs = search.Languages.Split(',');
            for (int i = 0; i < (langs.Length - 1); i++)
            {
                for (int j = 0; j < clbLang.Items.Count; j++)
                {
                    string lng = clbLang.Items[j] as string;
                    if (lng.Trim() == langs[i])
                    {
                        clbLang.SetItemChecked(j, true);
                        break;
                    }
                }
            }
        }

Без ошибок, отладочное исполнение проходит черезпроверка«Процесс, но, наконец, я не вижу ничего, проверенного на нем.

Затем я добавил кнопку и добавил следующий код к нему. (нажмите Проверьте все элементы)

private void button9_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < clbLang.Items.Count; i++)
        {
            clbLang.SetItemChecked(i, true);
        }
    }

Это "проверка«Все предметы, пожалуйста, скажите, если кто-нибудь сможет увидеть проблему здесь ...?

Это было полезно?

Решение

Наконец узнал, это Ошибка введен MS.

Здесь хорошо объясняется.

Проблема легко воспроизвести. Просто скрыть и покажу и показать файл погрузок CheckedListblistbox, и вы заметите, как ранее проверенные элементы получают незаменимые.

CheckedListbox setiTemcecked Метод не работает

Поэтому мы должны найти обходной путь ... Я пробовал так, чтобы он работал хорошо ...

В месте, где я звонил проверка предметов я добавил следующие ... Я добавляю то, что мне нужно проверить Ярлык контроля.

if (!string.IsNullOrEmpty(search.Languages))
{
    clbLang.Tag = search.Languages;
}

Затем следующий код в этом мероприятии «VisibleChangeded () () ()».

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

Это хорошо со мной хорошо работает, надеюсь, это принесет вам пользу ...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top