SetItemCheckState ломает foreach! Помогите? - PullRequest
2 голосов
/ 07 августа 2011

Я новичок здесь и у меня есть вопрос о CheckedListBox в C #.

Я создал CheckedListBox с данными из файла базы данных SQLite.

Я хочу, чтобы пользователь проверял или снимал флажки с элементов ипри этом он обновляется в базе данных.

При повторном открытии списка проверенные ранее элементы все равно должны быть проверены.Т.е. если логическое поле в базе данных говорит "true" для определенного элемента, его следует проверить.

Вот код, который я использую:

index = 0;
        foreach (DataRowView item in CheckedListBox.Items)
            {
                if (item.Row["viewed"].ToString() == "true")
                {                        
                   CheckedListBox.SetItemCheckState(index, CheckState.Checked);                        
                }
                index++;
            }

Когда я закомментируюСтрока в операторе If цикл проходит через все элементы, но когда я оставляю его, как указано выше, цикл входит только один раз.

Почему это так?

Я действительно новичок в C #.

Спасибо за любую помощь:)

1 Ответ

1 голос
/ 07 августа 2011

Используйте for loop вместо foreach.

        for (int i = 0; i < checkedListBox1.Items.Count; i++)
        {
            if (((DataRowView)checkedListBox1.Items[i]).Row["viewed"].ToString() == "true")
            {
                checkedListBox1.SetItemCheckState(i, CheckState.Checked);
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...