powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как сохранить цвет выбранной строки после обновления данных из базы Mysql?
10 сообщений из 10, страница 1 из 1
Как сохранить цвет выбранной строки после обновления данных из базы Mysql?
    #39765703
mkmen100500
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, прошу вашей помощи. Есть такой код C#:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
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 запомнить цвет?

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

Код: c#
1.
2.
3.
4.
5.
6.
7.
private async void toolStripButton4_Click(object sender, EventArgs e)//ОБНОВЛЕНИЕ ДАННЫХ
        {

            listView1.Items.Clear();
            await LoadBanksAsync();
            SetColor();
        }



Теперь собственно проблема:

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

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

Еще посмотрел что если в таблице более одной строки и все их окрасить, обновить то выбивает ту же ошибку. Решено только для одной строки в общем.
Прошу помощи, дорогие друзья! Если нужен еще какой либо код, скину.
...
Рейтинг: 0 / 0
Как сохранить цвет выбранной строки после обновления данных из базы Mysql?
    #39765710
mkmen100500
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Данные заполняются из MySQL базы.
...
Рейтинг: 0 / 0
Как сохранить цвет выбранной строки после обновления данных из базы Mysql?
    #39765793
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не знаю, что вам сказать, уверен, вы начинающий, и излишне критиковать вас было бы глупо, но код в помойку
мало того, что понять, что происходит просто довольно сложно, потому, что имена методов и полей мне практически не о чем не говорят, такого рода код if (toolStripComboBox1.Text == "Красный") мягко говоря недопустим.
Если переменная i по сути является индексом, становится совершенно не понятно, зачем тут поле
Dictionary<int, Color> colorsList = new Dictionary<int, Color>();
Использование справочника тут избыточно, хватит даже обычного массива.
Для цветов есть масса классов в .NET
Если вам нужен предустановленный набор цветов возможно взять существующий:
Посмотрите класс System.Windows.Media.Color из сборки PresentationCore, в ней перечислены все цвета,
в wpf используется несколько другие типы
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
            System.Drawing.Color dc = Color.Red;
            Color dsc = SystemColors.ActiveBorder;
            Color named = System.Drawing.Color.FromName("Red");
            Color known = Color.FromKnownColor(KnownColor.WindowText);
            Color green = Color.FromArgb(unchecked((int)0xFF008000));
            Console.WriteLine(Color.Green.ToArgb().ToString("x")); // ff008000
            //Получение списка всех предопределенных цветов из класса Color
            IEnumerable<string> colors = typeof(Color)
                .GetProperties(BindingFlags.Public | BindingFlags.Static)
                .Select(p => ((Color)p.GetValue(null, null)).Name);
            Console.WriteLine(string.Join(", ", colors));


попробуйте переделать свою логику и переложить все эти вопросы с цветами на код .net, ведь вы пилите самокат, которые не поедет, когда рядом стоит велосипед и не один, их много.
Color это структура, в операциях требующих высокой производительности и не безопасного кода, это может быть очень кстати.
...
Рейтинг: 0 / 0
Как сохранить цвет выбранной строки после обновления данных из базы Mysql?
    #39765800
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mkmen100500после обновления данных из mysql в форму происходит сброс цветацвет записать в доп.колнку в базе. А форму потом просто обновить refresh
...
Рейтинг: 0 / 0
Как сохранить цвет выбранной строки после обновления данных из базы Mysql?
    #39765805
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ошибка, не System.Windows.Media.Color , а System.Drawing.Color, как в примере, первое как раз из WPF
...
Рейтинг: 0 / 0
Как сохранить цвет выбранной строки после обновления данных из базы Mysql?
    #39765811
mkmen100500
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes, да, я начинающий и даже не расчитываю связать свою жизнь с программированием, просто наткнулся на видео, сидя на работе как человек делаем форму и подключает базу, попробовал, получилось, пошел дальше. Вот теперь такая проблема) Спасибо, буду думать.
...
Рейтинг: 0 / 0
Как сохранить цвет выбранной строки после обновления данных из базы Mysql?
    #39765814
mkmen100500
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123, имеете ввиду при выборе из тулбокса записывать значение в доп колонку строки?
...
Рейтинг: 0 / 0
Как сохранить цвет выбранной строки после обновления данных из базы Mysql?
    #39765845
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mkmen100500Petro123, имеете ввиду при выборе из тулбокса записывать значение в доп колонку строки?я сказал в mySql базу.
А какким макаром писать, это надо от вас скрин, юз кейс, сочинение на тему что вы делаете.
...
Рейтинг: 0 / 0
Как сохранить цвет выбранной строки после обновления данных из базы Mysql?
    #39765884
mkmen100500
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,ну в колонку базы естественно.
...
Рейтинг: 0 / 0
Как сохранить цвет выбранной строки после обновления данных из базы Mysql?
    #39765913
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mkmen100500Petro123,ну в колонку базы естественно.еще раз да))))
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как сохранить цвет выбранной строки после обновления данных из базы Mysql?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]