Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
62 / 6 / 1
Регистрация: 09.09.2012
Сообщений: 137

Выделение строк DataGridView цветом и использование colorDialog

06.10.2014, 11:29. Показов 3571. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1 ситуация
При загрузке формы автоматически выделяется первая строка в DataGridView. Мне бы хотелось, чтобы при загрузке формы первая строка не выделялась.

Пробовал вот так
C#
1
Grid1.ClearSelection();
Не помогает.

Попробовал на событиях CellPainting и RowPostPainting, выделение снимается, но при клике, строки больше не выделяются.

Вопрос № 1 – Как мне реализовать так, чтобы выделение строки происходило только в случае, если пользователь самостоятельно выделит одну строку или диапазон строк в DataGridView?

2 ситуация
На форме 2 (Form2) присутствует кнопка button1 с событием button1_Click для вызова colorDialog1 для одного варианта раскрашивания определенных строк в DataGridView и кнопка button2 с событием button2_Click для вызова colorDialog2 для другого варианта раскрашивания определенных строк в DataGridView.
Код по раскрашиванию определенных строк в DataGridView у меня следующий:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private void dgv_1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
        {
            for (int i = 0; i < dgv_1.Rows.Count; i++)
            {
                decimal x1 = Convert.ToDecimal(dgv_1.Rows[i].Cells["Сроком на"].Value.ToString());
                decimal y1 = Convert.ToDecimal(dgv_1.Rows[i].Cells["Текущая продолжительность"].Value.ToString());
 
                DateTime data1 = DateTime.Today;
                DateTime data2 = Convert.ToDateTime(dgv_1.Rows[i].Cells["Окончание"].Value.ToString());
                TimeSpan interval = (data2 - data1);
 
                if ((interval.Days <= (x1 - y1)) && (interval.Days <= 3))
                {
                    dgv_1.Rows[i].DefaultCellStyle.BackColor = Color.Red;
                }
                else if ((interval.Days > (x1 - y1)) && ((x1 - y1) <= 3))
                {
                    dgv_1.Rows[i].DefaultCellStyle.BackColor = Color.SkyBlue;
                }
            }
        }
Если я просто пишу вместо «Color.Red» – «colorDialog1.Color», а вместо «Color.SkyBlue» – «colorDialog2.Color», то возникают ошибки, говорящие о том, что colorDialog отсутствует в текущем контексте. Получается, что на главной форме colorDialog отсутствует и потому неизвестен.

Вопрос № 2 – Как мне отразить это в коде основной формы № 1 (Form1) вместо «Color.Red» и «Color.SkyBlue», поскольку DataGridView находится именно на Form1?

Вопрос № 3 – Как мне назначить цвет кнопок button1 и button2 в соответствии с выбранными значениями colorDialog1.Color? (или я неправильно использую colorDialog…)

Вопрос № 4 – Как мне реализовать кнопку «По умолчанию», которая бы выставляла цвета, которые я реализовал в своем проекте изначально?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.10.2014, 11:29
Ответы с готовыми решениями:

Выделение строк DataGridView цветом по условию
Здравствуйте! У меня есть DataGridView, которому в DataSource кладу DataTable, взятый из БД. Подскажите, как мне выделить строки, значение...

Выделение цветом строк в DataGridView по значению даты
Всем привет и с наступившим!!! Помогите плиз! Проект нужно уже сдавать, а не могу решить такую проблему.На форме есть DataGrigView. В самом...

ColorDialog - выделение цветом строки
Добрый день. Подскажите, пожалуйста, как можно с помощью ColorDialog выделить цветом определенную строку в StringGrid?

9
79 / 79 / 37
Регистрация: 11.09.2014
Сообщений: 579
06.10.2014, 12:16
1)при загрузке формы (Form_Load) установи datagridview1.rows[0].Selected = false;
2)тебе нужна передача между формами Ответы на 7 самых частых вопросов по WinForms
3)
C#
1
2
colorDialog1.ShowDialog();
button1.BackColor = colorDialog.Color;
4)также нужна передача данных между формами (п.3.)

Добавлено через 22 секунды
Если нужно магу кинуть проект

Добавлено через 4 минуты
Цитата Сообщение от Kaliostro82 Посмотреть сообщение
кнопка button1 с событием button1_Click для вызова colorDialog1 для одного варианта раскрашивания определенных строк в DataGridView и кнопка button2 с событием button2_Click для вызова colorDialog2 для другого варианта раскрашивания определенных строк
и еще для каких определенных строк?
По умолчанию в datagridview есть два вида строк все строки defayltStyle и нечетные строки AlternatingRowDefaulStyle
0
62 / 6 / 1
Регистрация: 09.09.2012
Сообщений: 137
06.10.2014, 12:45  [ТС]
Baky,
1 - спасибо огромное, работает как я и хотел.
2 - блин, так и подумал.. когда кнопку формирования темы нажимал уже =) буду пробовать и разбираться.
3 - я так делал, но кнопка запомнила свой изначальный цвет, то есть свойство color и при открытии формы вновь - показывала мне свой изначальный цвет.
4 - хмм.. тоже буду смотреть...
и еще для каких определенных строк?
у меня значения некоторых столбцов в datagridview проверяются на ряд условий, и при их выполнении подкрашиваются в различные цвета.
0
79 / 79 / 37
Регистрация: 11.09.2014
Сообщений: 579
06.10.2014, 12:51
Лучший ответ Сообщение было отмечено Kaliostro82 как решение

Решение

в общем держи проект. Там нету только первого пункта
Вложения
Тип файла: zip WindowsFormsApplication3.zip (52.8 Кб, 24 просмотров)
1
62 / 6 / 1
Регистрация: 09.09.2012
Сообщений: 137
06.10.2014, 12:51  [ТС]
Я не против твоего проекта.
И еще - глянь пожалуйста, ты не напутал с нумерацией ответов на мои вопросы, а то такое ощущение, что сбился..
0
79 / 79 / 37
Регистрация: 11.09.2014
Сообщений: 579
06.10.2014, 12:53
и условие свое подставишь

Добавлено через 1 минуту
Цитата Сообщение от Kaliostro82 Посмотреть сообщение
123
0
62 / 6 / 1
Регистрация: 09.09.2012
Сообщений: 137
06.10.2014, 12:54  [ТС]

Не по теме:

редактировать сообщение уже нельзя было и я подставил новое, чтобы отредактировать старое =)



вообщем пошел пробовать..
0
79 / 79 / 37
Регистрация: 11.09.2014
Сообщений: 579
06.10.2014, 12:58
хорошо, удачи

Добавлено через 2 минуты
Цитата Сообщение от Kaliostro82 Посмотреть сообщение
И еще - глянь пожалуйста, ты не напутал с нумерацией ответов на мои вопросы, а то такое ощущение, что сбился..
нет, не на путал во 2-м и 4-м вопросе одна задача - передача данных между формами. В 3-м пункте тоже все верно.
Хотя, возможно я тебя не правильно понял...
0
62 / 6 / 1
Регистрация: 09.09.2012
Сообщений: 137
06.10.2014, 14:28  [ТС]
Baky,
спасибо большое. все подходит.
0
79 / 79 / 37
Регистрация: 11.09.2014
Сообщений: 579
06.10.2014, 14:34
хорошо, удачи
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.10.2014, 14:34
Помогаю со студенческими работами здесь

Выделение цветом ячеек dataGridView по значению
Всем привет!!! Подскажите пожалуйста, как первые столбца строки dataGridView перекрасить в определенный цвет. В зависимости от надписи в...

DataGridView - выборочное выделение ячеек цветом
Помогите, пожалуйста!! Есть у меня в dataGridView есть несколько столбцов с названием &quot;Тема&quot; + еще какое-то неизвестное число и...

Выделение всей строки в DataGridView и закрашивание ее цветом
Здравствуйте! Существует следующий код private void dgv_leftPanel_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e) ...

Выделение строк цветом
На страница имеется скрипт, который позволяет выбрать все чекбоксы, имеющиеся в каждой строке таблицы. Можно ли доработать скрипт или код...

Выделение строк цветом
Как можно выделить только лишь определенную строку цветом, при этом что бы другие были стандартного цвета?


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru