Маркирани елементи в 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
Благодаря ви, но не се получи... Кое събитие избрахте? и какъв е типът на проверените елементи във вашето приложение. настройки? - person user3393134; 08.03.2014
comment
О, СЪЖАЛЯВАМ, мисля, че не ме разбирате, имам предвид как да запазя отметка в квадратчето със списък като в това видео: youtube.com/watch?v=OSCNVqVTlQ4 В този видеоклип той запазва отметката в квадратчето за отметка, а не в полето за отметка със списък. - person user3393134; 08.03.2014
comment
Братко, CheckBox и CheckedListBox са две различни неща. И двете се държат различно. CheckBox е USD на места, където искате да дадете само една проверка на потребителя. Пример: Съгласен съм с правилата и условията място. Докато списъкът с отметнати квадратчета е даден на места, където искате потребителят да избере множество стойности. Във вашия случай не съм сигурен какво търсите. Но кодът, който публикувахте, беше за checkedlistbox, следователно моят отговор беше базиран на checkedlistbox. - person Ashish Charan; 08.03.2014
comment
Да, имам нужда от същото нещо като във видеото, но в CheckedListBox. Обяснявам: имам много кодове за поръчки в checkedlistbox, взети от DataBase, когато проверих някои поръчки в checkedlistbox (направете тяхната стойност - true) и излязох от формуляра, така че когато отворя отново формуляра, поръчките в checkedlistbox се връщат да е невярно и да не е истина. И така, как ще направя така, че поръчките, КОИТО СА МАРКИРАЛИ в полето за отметка, да се върнат като верни, когато отворя отново формуляра? Благодаря. - person user3393134; 08.03.2014
comment
Моля, проверете редактирания код. В зареждането на формуляра можете да напишете кода за извличане на избрани елементи от файла с настройки и след това да поставите отметка в избраните квадратчета. - person Ashish Charan; 09.03.2014