Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > Windows Forms
Регистрация

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

Ответ
 
Опции темы
Старый 11.01.2019, 06:01   #1
mkmen100500
 
Регистрация: 11.01.2019
Сообщений: 4
Репутация: 10
По умолчанию Как сохранить цвет выбранной строки после обновления данных из базы Mysql?

Здравствуйте, прошу вашей помощи. Есть такой код C#:
Код:

Dictionary<int, Color> colorsList = new Dictionary<int, Color>();
        private void toolStripButton5_Click(object sender, EventArgs e)//ИЗМЕНЕНИЕ ЦВЕТА СТРОКИ
        {

            for (int i = 0; i < listView1.Items.Count; i++)
            {
                if (listView1.Items[i].Selected == true)
                {
                    if (toolStripComboBox1.Text == "Красный")
                        

                    {

                        listView1.Items[i].BackColor = Color.Red;
                        if (!colorsList.ContainsKey(i)) { colorsList.Add(i, Color.Red); }
                        else { colorsList[i] = Color.Red; }
                    }

                    else if (toolStripComboBox1.Text == "Желтый")

                    {

                        listView1.Items[i].BackColor = Color.Yellow;
                        if (!colorsList.ContainsKey(i)) { colorsList.Add(i, Color.Yellow); }
                        else { colorsList[i] = Color.Yellow; }
                    }

                    else if (toolStripComboBox1.Text == "Зеленый")

                    {

                        listView1.Items[i].BackColor = Color.Green;
                        if (!colorsList.ContainsKey(i)) { colorsList.Add(i, Color.Green); }
                        else { colorsList[i] = Color.Green; }

                    }

                    else if (toolStripComboBox1.Text == "Без цвета")

                    {

                        listView1.Items[i].BackColor = Color.White;
                        if (!colorsList.ContainsKey(i)) { colorsList.Add(i, Color.White); }
                        else { colorsList[i] = Color.White; }
                    }
                }
            }
        }

        void SetColor()
        {

            foreach (var c in colorsList)
            {
                if (listView1.Items.Count >= c.Key)
                    listView1.Items[c.Key].BackColor = c.Value;
            }
        }

Выбранная строка в listview цветом выделяется, но после обновления данных из mysql в форму происходит сброс цвета соответственно. Подскажите как заставить строки listview запомнить цвет?

Код обновления просто по кнопке:

Код:

private async void toolStripButton4_Click(object sender, EventArgs e)//ОБНОВЛЕНИЕ ДАННЫХ
        {
            listView1.Items.Clear();
            await LoadBanksAsync();
        }

я понимаю что listView1.Items.Clear(); сбрасывает все с listview, но без нее начинается дублирование данных. Как сохранить цвет? Подмогите пожалста.
mkmen100500 на форуме   Ответить с цитированием
Старый 15.01.2019, 07:13   #2
mkmen100500
 
Регистрация: 11.01.2019
Сообщений: 4
Репутация: 10
По умолчанию

Есть мысли ребят? Что нужно скажите, скину код. Маюсь уже долго(
mkmen100500 на форуме   Ответить с цитированием
Старый 15.01.2019, 10:33   #3
evg_m
Профессионал
 
Регистрация: 20.04.2008
Сообщений: 4,776
Репутация: 2114
По умолчанию

ПЕРЕД обновлением запомнить где-то
ПОСЛЕ восстановить из ЗАПОМНЕННОГО
__________________
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума   Ответить с цитированием
Старый 15.01.2019, 10:51   #4
mkmen100500
 
Регистрация: 11.01.2019
Сообщений: 4
Репутация: 10
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
ПЕРЕД обновлением запомнить где-то
ПОСЛЕ восстановить из ЗАПОМНЕННОГО
Ну это логично, вы правы.
mkmen100500 на форуме   Ответить с цитированием
Старый Сегодня, 13:18   #5
mkmen100500
 
Регистрация: 11.01.2019
Сообщений: 4
Репутация: 10
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
ПЕРЕД обновлением запомнить где-то
ПОСЛЕ восстановить из ЗАПОМНЕННОГО
Разобрался с этим делом, поместив SetColor() в обновление данных из MySQL.

Но при закрытии и новом открытии цвета сбрасываются и если строка закрашивается, и после этого добавить новую строку, то выводит Исключение типа "System.ArgumentOutOfRangeException " возникло в mscorlib.dll, но не было обработано в коде пользователя

Дополнительные сведения: InvalidArgument=Значение '0' недопустимо для 'index'.

Еще посмотрел что если в таблице более одной строки и все их окрасить, обновить то выбивает ту же ошибку. Решено только для одной строки в общем.
Прошу помощи, дорогие друзья!
mkmen100500 на форуме   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Список. Как изменить цвет заливки выбранной строки? klim8 Microsoft Office Access 2 21.03.2018 00:26
После обновления вордпресс, обновления плагина woocommerce, после оформления заказов не показывает количество купленных товаров Алекс Мельников WordPress и другие CMS 4 24.07.2016 03:28
DLE. Проблема после обновления с 9.5 на 9.6. MySQL Error elagin WordPress и другие CMS 2 19.09.2012 11:57
Как после обновления страницы сохранить данные в инпуте? byMary93 JavaScript, Ajax 1 01.08.2012 11:46
Странное поведение PHP с MySQL..запись в базе дублируется после обновления страницы Vervolf PHP 30 30.07.2011 02:10


13:55.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru