Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Kaliostro82
61 / 5 / 1
Регистрация: 09.09.2012
Сообщений: 86
1

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

06.10.2014, 11:29. Просмотров 1229. Ответов 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)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2014, 11:29
Ответы с готовыми решениями:

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

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

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

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

Выделение всей строки в DataGridView и закрашивание ее цветом
Здравствуйте! Существует следующий код private void...

9
Baky
78 / 78 / 37
Регистрация: 11.09.2014
Сообщений: 579
06.10.2014, 12:16 2
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
Kaliostro82
61 / 5 / 1
Регистрация: 09.09.2012
Сообщений: 86
06.10.2014, 12:45  [ТС] 3
Baky,
1 - спасибо огромное, работает как я и хотел.
2 - блин, так и подумал.. когда кнопку формирования темы нажимал уже =) буду пробовать и разбираться.
3 - я так делал, но кнопка запомнила свой изначальный цвет, то есть свойство color и при открытии формы вновь - показывала мне свой изначальный цвет.
4 - хмм.. тоже буду смотреть...
и еще для каких определенных строк?
у меня значения некоторых столбцов в datagridview проверяются на ряд условий, и при их выполнении подкрашиваются в различные цвета.
0
Baky
78 / 78 / 37
Регистрация: 11.09.2014
Сообщений: 579
06.10.2014, 12:51 4
Лучший ответ Сообщение было отмечено Kaliostro82 как решение

Решение

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

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

Не по теме:

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



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

Добавлено через 2 минуты
Цитата Сообщение от Kaliostro82 Посмотреть сообщение
И еще - глянь пожалуйста, ты не напутал с нумерацией ответов на мои вопросы, а то такое ощущение, что сбился..
нет, не на путал во 2-м и 4-м вопросе одна задача - передача данных между формами. В 3-м пункте тоже все верно.
Хотя, возможно я тебя не правильно понял...
0
Kaliostro82
61 / 5 / 1
Регистрация: 09.09.2012
Сообщений: 86
06.10.2014, 14:28  [ТС] 9
Baky,
спасибо большое. все подходит.
0
Baky
78 / 78 / 37
Регистрация: 11.09.2014
Сообщений: 579
06.10.2014, 14:34 10
хорошо, удачи
0
06.10.2014, 14:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.10.2014, 14:34

Выделение цветом отличную часть 2 строк
Всем доброго времени суток. Есть две строки. я их сравнил. нашел отличающуюся...

DataGridView1.SelectedRows - выделение нескольких строк цветом
Всем добрый день! Чет сломал голову, не могу понять... Имеется форма...

Подсчитать количество строк в datagridview, выделенных красным цветом
В датагриде строки красятся с помощью такого кода: private void PaintRows() ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru