Проверенные элементы в CheckedListBox

У меня есть CheckedListBox с элементами из базы данных. Когда я проверяю элемент в CheckedListBox и после этого закрываю форму и снова открываю форму, элемент больше не проверяется, т.е. "чек" не сохраняется.

Как я могу добиться этого, если я проверю элемент, а затем закрою форму и снова открою ее, чтобы элемент все еще был отмечен?

Я пробовал это:

 void deliveries_FormClosing(object sender, FormClosingEventArgs e)
    {
       for (int i = 0; i < deliveries.ClbOrdersCheckDelivery.Items.Count; i++)
        {
            if (deliveries.ClbOrdersCheckDelivery.GetItemChecked(i) == true)
            {
                Properties.Settings.Default.CheckedItems = deliveries.ClbOrdersCheckDelivery.GetItemChecked(i);
            }
        }
    }

]\


person user3393134    schedule 07.03.2014    source источник
comment
Для этого можно использовать настройки приложения.   -  person Max    schedule 07.03.2014
comment
Да, Макс, я отредактировал свой вопрос, пожалуйста, посмотрите.   -  person user3393134    schedule 07.03.2014


Ответы (1)


Вам нужно написать

Properties.Settings.Default.Save();

Чтобы сохранить настройки. Пишите после цикла for.

ИЗМЕНИТЬ

Я попробовал следующий код, чтобы сохранить все отмеченные элементы в файле настроек. Оно работает. Пожалуйста, проверьте.

    private void button1_Click(object sender, EventArgs e)
    {
        Properties.Settings.Default.CheckedItems = string.Empty;
        foreach (var item in checkedListBox1.CheckedItems)
        {
            Properties.Settings.Default.CheckedItems += item + "," ;
        }
        Properties.Settings.Default.Save();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        MessageBox.Show(Properties.Settings.Default.CheckedItems);
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        var checkedItems = Properties.Settings.Default.CheckedItems.ToString().Split(',');
        foreach (var item in checkedItems)
        {
            var index=checkedListBox1.FindString(item);
            if(index>=0)
            {
                checkedListBox1.SetItemChecked(index, true);
            }
        }
    }

введите здесь описание изображения

введите здесь описание изображения

person Ashish Charan    schedule 07.03.2014
comment
Это не сработало... я думаю, что проблема в: Properties.Settings.Default.CheckedItems = deliveries.ClbOrdersCheckDelivery.GetItemChecked(i); ПОМОГИ ПОЖАЛУЙСТА! - person user3393134; 07.03.2014
comment
В любом случае следует вызвать метод сохранения, чтобы сохранить изменения в ваших настройках. Кроме того, я надеюсь, что вы пытаетесь сохранить CheckItem, а не Items. Потому что ваш код сохранит только один элемент. - person Ashish Charan; 07.03.2014
comment
Спасибо, но это не сработало... Какое событие вы выбрали? и каков тип CheckedItems в вашем приложении. настройки? - person user3393134; 08.03.2014
comment
О, ПРОСТИТЕ, я думаю, что вы меня не поняли, я имею в виду, как сохранить контрольный список Check In, как в этом видео: youtube.com/watch?v=OSCNVqVTlQ4 В этом видео он сохраняет флажок в поле флажка, а не в поле списка. - person user3393134; 08.03.2014
comment
Бро, CheckBox и CheckedListBox — это две разные вещи. И оба ведут себя по-разному. CheckBox используется в местах, где вы хотите дать пользователю только один чек. Пример: Я согласен с условиями размещения. В то время как список флажков дается в местах, где вы хотите, чтобы пользователь выбрал несколько значений. В вашем случае я не уверен, что вы ищете. Но код, который вы разместили, был для checklistbox, поэтому мой ответ был основан на checklistbox. - person Ashish Charan; 08.03.2014
comment
Да, мне нужно то же самое, что в видео, но на CheckedListBox. Я объясняю: у меня есть много кодов заказов в списке проверенных, взятых из базы данных, когда я проверял некоторые заказы в проверенном списке (сделайте их значение - истинным) и выхожу из формы, поэтому, когда я снова открываю форму, заказы в проверенном списке возвращаются быть ложным и неверным. Итак, как мне сделать так, чтобы Заказы, ОТМЕЧЕННЫЕ мной в Checkedlistbox, возвращались к истине при повторном открытии формы? Спасибо. - person user3393134; 08.03.2014
comment
Пожалуйста, проверьте отредактированный код. В форме загрузки вы можете написать код для извлечения выбранных элементов из файла настроек, а затем установить выбранные флажки. - person Ashish Charan; 09.03.2014