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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.09.2014, 05:52   #1
notlive1987
Новичок
Джуниор
 
Регистрация: 25.09.2014
Сообщений: 1
По умолчанию Перекраска DataGridView

В общем задача такова. Загружаем данные в грид после загрузки данных перекрашиваем нужные ячейки и строки с условиями приведенными в коде.
Загрузка данных в грид происходит быстро, а вот раскраска его очень медленная. Подскажите товарищи гуру как можно решить данную проблему?

Код:
if (dgvPvh.Rows.Count == 0) return;
                    dgvPvh.Sort(id, ListSortDirection.Descending);
                    isLoadPvh = true;
                    progressBarRestyle.Properties.Maximum = progressBarRestyle.Properties.Maximum + dgvPvh.Rows.Count;
                    foreach (DataGridViewRow row in dgvPvh.Rows)
                    {
                            progressBarRestyle.Text = (Convert.ToInt32(progressBarRestyle.Text)+1).ToString();
                            //Метка готовности
                            switch (row.Cells[21].Value.ToString())
                            {
                                case "0":
                                    row.DefaultCellStyle.Font = new Font(dgvPvh.DefaultCellStyle.Font, FontStyle.Regular);
                                    row.Cells[10].Style.BackColor = row.Cells[9].Style.BackColor;
                                    row.Cells[10].Style.ForeColor = Color.Black;
                                    break;
                                case "1":
                                    row.DefaultCellStyle.Font = new Font(dgvPvh.DefaultCellStyle.Font, FontStyle.Regular);
                                    row.Cells[10].Style.BackColor = Color.Green;
                                    row.Cells[10].Style.ForeColor = Color.White;
                                    break;
                                case "2":
                                    row.DefaultCellStyle.Font = new Font(dgvPvh.DefaultCellStyle.Font, FontStyle.Strikeout);
                                    row.Cells[10].Style.BackColor = row.Cells[9].Style.BackColor;
                                    row.Cells[10].Style.ForeColor = Color.Black;
                                    break;
                                case "3":
                                    row.DefaultCellStyle.Font = new Font(dgvPvh.DefaultCellStyle.Font, FontStyle.Regular);
                                    row.Cells[10].Style.BackColor = Color.Chartreuse;
                                    row.Cells[10].Style.ForeColor = Color.Black;
                                    break;
                            }

                        //Метка срыва
                        if (row.Cells[11].Value.ToString() != "")
                        {
                                row.Cells[11].Style.BackColor = Color.Red;
                                row.Cells[11].Style.ForeColor = Color.White;
                        }
                        else
                        {
                                row.Cells[11].Style.BackColor = row.Cells[12].Style.BackColor;
                                row.Cells[11].Style.ForeColor = Color.Black;
                        }

                        //Метка заказа
                        if (row.Cells[22].Value.ToString() != "")
                        {
                                switch (row.Cells[22].Value.ToString())
                                {
                                    case "0":
                                        row.DefaultCellStyle.BackColor = Color.White;
                                        break;
                                    case "1":
                                        row.DefaultCellStyle.BackColor = Color.Silver;
                                        break;
                                    case "2":
                                        row.DefaultCellStyle.BackColor = Color.LightCoral;
                                        break;
                                    case "3":
                                        row.DefaultCellStyle.BackColor = Color.LightGreen;
                                        break;

                                }
                        }

                        if (row.Cells[23].Value.ToString() != "")
                        {
                                switch (row.Cells[23].Value.ToString())
                                {
                                    case "0":
                                        row.Cells[5].Style.BackColor = row.Cells[3].Style.BackColor;
                                        break;
                                    case "1":
                                        row.Cells[5].Style.BackColor = Color.DodgerBlue;
                                        break;
                                }
                        }
                        Application.DoEvents();
                    }
                    isLoadPvh = false;
Все это запускается в отдельном потоке через Invoke.Begin(new Action)
notlive1987 вне форума Ответить с цитированием
Старый 25.09.2014, 09:18   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Для перекраски есть методы CellPostPaint и CellPrePaint.
Там и определяйте перерисовки и раскраски.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DataGridView и С# jonkaspar2008 C# (си шарп) 3 10.03.2012 22:47
DataGridView Maladoj Общие вопросы .NET 1 24.11.2010 14:18
dataGridView Alex_sim Общие вопросы .NET 4 12.06.2010 20:50
DataGridView serenu Помощь студентам 1 15.04.2010 21:40
C#, datagridview Studento4ka Помощь студентам 0 21.11.2009 13:34