2 / 2 / 2
Регистрация: 02.06.2017
Сообщений: 63

Цвет ячейки datagridView в зависимости от даты

25.01.2018, 14:27. Показов 5592. Ответов 4

Author24 — интернет-сервис помощи студентам
Всем добрый день!
Есть такой вопрос: имеется datagridView, в столбце dtSec отображается дата из MSSQL.
Идея: Если кол-во дней до даты меньше, чем <date - number>, то закрасить ячейку цветом.
В настоящий момент закрашиваю ячейку таким образом:
Цвет ячейки datagridView в зависимости от даты


C#
1
2
3
4
5
6
7
8
9
10
11
private void dataGridView1_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
        {
            for (int i = 0; i < dataGridView1.ColumnCount; i++)
                for (int j = 0; j < dataGridView1.RowCount; j++)
                {
                    switch (dataGridView1[i, j].FormattedValue.ToString())
                    {
                        case "15.02.2018": dataGridView1[i, j].Style.BackColor = Color.Red; break;
                    }
                }
        }
Дата в case введена вручную, соответственно.
Как сделать программно так, чтобы, допустим, если до даты в столбце dtSec меньше 7 дней, закрасить красным цветом?
Спасибо!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.01.2018, 14:27
Ответы с готовыми решениями:

Как изменить цвет шрифта ячейки DataGridView в зависимости от типа данных?
Строки DataGridView содержат данные разных типов. Как задать соответствие между типом данных и цветом? Добавлено через 6 минут То...

Как изменить цвет ячейки TDBGrid в зависимости от текущего даты
Привет всем я чайник. помогите плиз! :wall:

Поменять цвет ячейки в зависимости от текста ячейки
Всем привет! помогите с задачкой! как в VBA реализовать заливку ячеек по содержимому УСО №25 УСО№25, подучасток 2 УСО№25,...

4
 Аватар для ViterAlex
8945 / 4857 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
25.01.2018, 14:30
свой столбец, своя ячейка и там закрашивай через CellStyle
0
0 / 0 / 0
Регистрация: 14.01.2018
Сообщений: 14
25.01.2018, 15:56
я тупой, мне нужен пример , не понял

Добавлено через 22 секунды
ViterAlex, я тупой, мне нужен пример , не понял
0
3565 / 2506 / 1174
Регистрация: 14.08.2016
Сообщений: 8,216
25.01.2018, 19:31
C#
1
if((DateTime.Now - "дата из БиДэ").TotalDays < 7) //делаем что надо
0
 Аватар для ViterAlex
8945 / 4857 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
25.01.2018, 20:46
ProRight, берёшь пример отсюда.
Делаем класс, содержащий цвет и предикат условия заливки этим цветом:
C#
1
2
3
4
5
6
7
using System;
using System.Drawing;
public class ColorFormat
{
    public Color Color { get; set; }
    public Predicate<DateTime> Predicate { get; set; }
}
Делаем интерфейс:
C#
1
2
3
4
5
using System.Collections.Generic;
public interface IColorFormat
{
    IList<ColorFormat> ColorFormats { get; set; }
}
В класс CalendarColumn добавляем его реализацию:
C#
1
2
3
4
5
public class CalendarColumn : DataGridViewColumn, IColorFormat
{
 
    public IList<ColorFormat> ColorFormats { get; set; }
//дальше как в примере
В классе ячейки CalendarCell переопределяем метод рисования:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
protected override void Paint(Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, int rowIndex, DataGridViewElementStates cellState, object value, object formattedValue, string errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts)
{
    var column = (OwningColumn as IColorFormat);
    if (column.ColorFormats != null)
    {
        foreach (var item in column.ColorFormats)
        {
            if (item.Predicate((DateTime)Value))
            {
                cellStyle.BackColor = item.Color;
                break;
            }
        }
    }
    base.Paint(graphics, clipBounds, cellBounds, rowIndex, cellState, value, formattedValue, errorText, cellStyle, advancedBorderStyle, paintParts);
}
Всё. Теперь для столбца задаём условия закрашивания ячеек
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
var col = dataGridView1.Columns[0] as IColorFormat;
col.ColorFormats = new[] {
    //Для первого столбца закрашивать красным, если до даты < 7 дней
    new ColorFormat() {
        Color = Color.Red,
        Predicate = (d) => {
            var ts = d - DateTime.Now;
            return ts.TotalDays > 0 && ts < TimeSpan.FromDays(7);
            }
        },
    //Для первого столбца закрашивать зелёным, если до даты > 10 дней
    new ColorFormat() {
        Color = Color.Green,
        Predicate = (d) => {
            var ts = d - DateTime.Now;
            return ts.TotalDays > 0 && ts > TimeSpan.FromDays(10);
            }
        }
    };
//Для второго столбца закрашиваем жёлтым, если месяц больше марта
col = dataGridView1.Columns[1] as IColorFormat;
col.ColorFormats = new[] {
    new ColorFormat(){
        Color = Color.Yellow,
        Predicate = (d) => {
            return d.Month > 3;
            }
        }
    };
и наслаждаемся результатом
Цвет ячейки datagridView в зависимости от даты
Вложения
Тип файла: zip WindowsFormsApp1.zip (13.4 Кб, 69 просмотров)
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.01.2018, 20:46
Помогаю со студенческими работами здесь

Форматирование ячейки в dataGridView. Как поменять цвет определенной ячейки
Хочу поменять цвет выбранной ячейки, так что бы когда при выбраной строки цвет ячейки оставался таким же. Пример: Что бы дата...

Цвет ячейки в зависимости от слова
Всем привет. Помогите пожалуйста. Вот код: var str = ; cop1=; cop1=0 cop1=1; cop1=0; cop1=1;

Цвет ячейки в зависимости от слова
Добрый день всем! Подскажите пж как в DBgrid сделать что бы ячейки красились в зависимости от слова?то есть есть три слова Выполнено,ЧС,...

Цвет ячейки DBGrid в зависимости от её содержимого
Здравствуйте! Ввёл тему поста в поисковую строку и то, что получил в ответ, меня не удовлетворило... Блин, не могу разобраться. Добрые...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

Новые блоги и статьи
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
Многопоточное программировани­е в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
Lazarus. Таблица с объединением ячеек.
Massaraksh7 21.03.2025
Понадобилась представление на экране таблицы с объединёнными ячейками. И не одной, а штук триста, и все разные. На Delphi я использовал для этих целей TStringGrid, и то, кривовато получалось. А в. . .
Async/await в Swift: Асинхронное программировани­е в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
Колмогоровская сложность: Приёмы упрощения кода
ArchitectMsa 20.03.2025
Наверное, каждый программист хотя бы раз сталкивался с кодом, который напоминает запутанный лабиринт — чем дальше в него погружаешься, тем сложнее найти выход. И когда мы говорим о сложности кода, мы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru