Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.09.2018, 22:51   #1
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию Отследить статусы CheckedListBox

На форму помещен CheckedListBox, хочу по изменению любого флажка получить список только выбраных флажков. Но всегда выводится полный список т.е. всегда статус true. Что делаю не так?

Код:
private void cblOptions_ItemCheck(object sender, ItemCheckEventArgs e)
{
    CheckedOptions = new List<string>();
    Debug.WriteLine("====="+DateTime.Now.ToString()+"=======");
    Debug.Indent();

    for (int i = 0; i < cblOptions.Items.Count; i++)
    {
        if (cblOptions.GetItemChecked(i) == true)
        {
            CheckedOptions.Add(cblOptions.Items[i].ToString());
            Debug.WriteLine(cblOptions.Items[i].ToString()+":"+ cblOptions.GetItemChecked(i).ToString());
        }
    }
    Debug.WriteLine("============");
    Debug.Unindent();
}
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 25.09.2018, 23:13   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

попробуйте так:
Код:
for (int i = 0; i < cblOptions.Items.Count; i++)
    { 
        if (cblOptions.GetItemCheckState(i) == CheckState.Checked)
        {
или даже так:
Код:
foreach(object itemChecked in cblOptions.CheckedItems) {

        // Use the IndexOf method to get the index of an item.
        MessageBox.Show("Item with title: \"" + itemChecked.ToString() + 
                        "\", is checked. Checked state is: " + 
                        checkedListBox1.GetItemCheckState(checkedListBox1.Items.IndexOf(itemChecked)).ToString() + ".");
    }
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.09.2018, 08:09   #3
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Выделил в отдельный метод, работает.
Код:
foreach (var item in cblOptions.CheckedItems)
{
       CheckedOptions.Add(item.ToString());
}
еще нашел на стаке
Код:
CheckedOptions = cblOptions.CheckedItems.OfType<string>().ToList();
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Статусы вконтакте romantik2011 Свободное общение 20 09.08.2011 15:34
c# checkedlistbox stupid Помощь студентам 2 16.12.2010 13:15
Макрос, проставляющий статусы в зависимости от даты Oriella Microsoft Office Excel 2 26.05.2010 18:45
необходимо придумать статусы Alar О форуме и сайтах клуба 40 20.12.2006 20:01