Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 14.01.2023
Сообщений: 45

DataGridViewRow временная подсветка изменяемых значений

23.11.2023, 15:36. Показов 2163. Ответов 49
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет.

Выводится N количество строк в таблице, добавилась новая строчка, ок, если в дальнейшем в этой самой строчке изменились данные (например в первом столбце и пятом) нужно сменить цвет изменившегося значения в конкретной "ячейки" (первого и пятого столбца) на 2сек, а затем вернуть в исходную.

Я по началу думал создавать новый таймер для каждой строчки, а потом подумал, может достаточно одного, который будет тикать каждую секунду и перебирать в цикле все строчки, но как тогда узнать в какой строчке и именно в ней вернуть исходный цвет (если например сменится очерёдность строк)

В нужен совет, как лучше поступить, для реализации задачи.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.11.2023, 15:36
Ответы с готовыми решениями:

Амплитудно-временная, частотно-временная характеристика mp3
Всех приветствую, есть необходимость, сделать некоторое подобие «детектора шума». На чистом, или почти cmd, вставки на ps или vbs...

Подсветка неправильных значений в DGV
Возник еще один вопрос по судоку. Как сделать, что бы в Датагриде подсвечивались ячейки с неправильными цифрами, то есть, если одинаковые...

Подсветка значений не влезающих в выпадающий список...
Есть выпадающий список, некоторые значения в котором довольно длинные... Растянуть список на всю длину значений не получится... Можно...

49
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3465 / 2785 / 576
Регистрация: 04.09.2018
Сообщений: 8,764
Записей в блоге: 3
24.11.2023, 19:26
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Vladimirchy Посмотреть сообщение
До этого момента есть понимание что и как происходит ?
Неполное.
Цитата Сообщение от Vladimirchy Посмотреть сообщение
Данные состоят из некого уникального ID
Цитата Сообщение от Vladimirchy Посмотреть сообщение
Данные в виде класса:
Так это данные в виде единого блока или разные? Этот ID внутри "класса" или как?

Цитата Сообщение от Vladimirchy Посмотреть сообщение
Если запущена процедура подсвечивания определённых ячеек и в этот момент пришли новые данные и после сортировки в коллекции их порядок поменялся (относительно грида) то мне нужно как то обновить предыдущие данные строки и столбика на актуальные
Тут тоже без бутылки не разберешься. Так если есть ID, то какие проблемы? Ни черта не пойму...

Условно: в гриде (в коллекции) есть три "строки" - a,b,e. Тут прилетает строка 'c' - ее в гриде нет, значит она после сортировки попадает на третье место и теперь грид содержит a,b,c,e. Верно?
Теперь летит строка 'e' с измененными данными - она в гриде есть, поэтому просто подсвечиваем нужные ячейки.
Если в момент, когда "свечение" ячеек еще не завершилось, прилетает новая строка 'd', то, судя по всему, должно произойти следующее: строка 'd' встает перед 'e', соотв. строка 'e' смещается вниз, но продолжает светиться. Грид теперь содержит строки: a,b,c,d,e.

Так что ли?
0
 Аватар для Worldmaster
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
24.11.2023, 19:52
Цитата Сообщение от Vladimirchy Посмотреть сообщение
Если запущена процедура подсвечивания определённых ячеек и в этот момент пришли новые данные и после сортировки в коллекции их порядок поменялся (относительно грида) то мне нужно как то обновить предыдущие данные строки и столбика на актуальные и я не знаю как это сделать...
Так в этот момент запустите таску которая добавит цвет и через некоторое время его выключит. В чем сложность то?
зачем городить какие то таймеры и постоянные проверки ?
Проблема же элементарна.
0
0 / 0 / 0
Регистрация: 14.01.2023
Сообщений: 45
24.11.2023, 20:15  [ТС]
Цитата Сообщение от wizard41 Посмотреть сообщение
Так это данные в виде единого блока или разные? Этот ID внутри "класса" или как?
класс:
public class MyClass
{
public string color { get; set; }
public int size { get; set; }
public int weight { get; set; }
}

Коллекция:
C#
1
Dictionary<int, MyClass> MyDict = new Dictionary<int, MyClass>();
Пришли данные, ну пусть будет массив по UART, этот массив как то обрабатывается и берутся от туда данные (они к задачи не имеют ни какого отношения)
Пусть на выходе они выглядят вот так:

ID = 30
_color = red
_size = 100
_weight = 56

Затем я проверяю, если такой id коллекции в <TKey>, если нет добавляю:
C#
1
2
3
4
MyDict .Add(ID, new MyClass());
MyDict [ID].color = "red";
MyDict [ID].size = "100;
MyDict [ID].weight  = 56;
Если есть в коллекции такой ID, то просто проверяю данные и меняю, если что то изме
Цитата Сообщение от wizard41 Посмотреть сообщение
Условно: в гриде (в коллекции) есть три "строки" - a,b,e. Тут прилетает строка 'c' - ее в гриде нет, значит она после сортировки попадает на третье место и теперь грид содержит a,b,c,e. Верно?
Теперь летит строка 'e' с измененными данными - она в гриде есть, поэтому просто подсвечиваем нужные ячейки.
Если в момент, когда "свечение" ячеек еще не завершилось, прилетает новая строка 'd', то, судя по всему, должно произойти следующее: строка 'd' встает перед 'e', соотв. строка 'e' смещается вниз, но продолжает светиться. Грид теперь содержит строки: a,b,c,d,e.
нилось.

Да именно так.
Цитата Сообщение от wizard41 Посмотреть сообщение
Так если есть ID, то какие проблемы?
Проблему я расписал...
Если вы знаете как это решается, то для вас понятно что не проблема.

Добавлено через 5 минут
Цитата Сообщение от Worldmaster Посмотреть сообщение
Так в этот момент запустите таску которая добавит цвет и через некоторое время его выключит. В чем сложность то?
зачем городить какие то таймеры и постоянные проверки ?
Проблема же элементарна.
Тогда будьте добры, поделитесь решением ?
Что бы выключить цвет, нужно знать где, а если нумерация строк сбита, выключить соседям ?)
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3465 / 2785 / 576
Регистрация: 04.09.2018
Сообщений: 8,764
Записей в блоге: 3
24.11.2023, 20:15
Цитата Сообщение от Vladimirchy Посмотреть сообщение
ID = 30
С классом разобрались.
ID откуда берется?
0
0 / 0 / 0
Регистрация: 14.01.2023
Сообщений: 45
24.11.2023, 20:21  [ТС]
Цитата Сообщение от wizard41 Посмотреть сообщение
ID откуда берется?
Приходит из вне, вместе с остальными данными.
Воспринимайте номер ID как имя человека, который меняет иногда цвет рубашки, свой вес и размеры
0
 Аватар для Worldmaster
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
24.11.2023, 20:21
Цитата Сообщение от Vladimirchy Посмотреть сообщение
нужно знать где, а если нумерация строк сбита, выключить соседям ?)
Так в таску передавайте саму строку и индекс ячейки.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3465 / 2785 / 576
Регистрация: 04.09.2018
Сообщений: 8,764
Записей в блоге: 3
24.11.2023, 20:31
Цитата Сообщение от Vladimirchy Посмотреть сообщение
Воспринимайте номер ID как имя человека
ID он и в Африке ID. Некий уникальный идентификатор, отделяющий одно от другого.
Я лишь хотел понять - он часть класса или отдельная сущность. Теперь ясно - отдельная.
Цитата Сообщение от Worldmaster Посмотреть сообщение
Так в таску передавайте саму строку и индекс ячейки
Думаю, до тасок ТСу еще далеко.
0
0 / 0 / 0
Регистрация: 14.01.2023
Сообщений: 45
24.11.2023, 20:38  [ТС]
Цитата Сообщение от wizard41 Посмотреть сообщение
Думаю, до тасок ТСу еще далеко
Возможно в С# и далеко.
Я по Си и частично С++, после этих языков, в С# многое кажется непонятным и усложнённым, например делегаты...
Писать оконное ПО на С# просто прошлось.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3465 / 2785 / 576
Регистрация: 04.09.2018
Сообщений: 8,764
Записей в блоге: 3
24.11.2023, 20:41
Цитата Сообщение от Vladimirchy Посмотреть сообщение
Писать оконное ПО на С# просто прошлось.
Конечная цель какая? Ради научится и писать что-то другое или просто нужна такая программа для работы?
0
0 / 0 / 0
Регистрация: 14.01.2023
Сообщений: 45
24.11.2023, 20:44  [ТС]
Цитата Сообщение от wizard41 Посмотреть сообщение
Конечная цель какая? Ради научится и писать что-то другое или просто нужна такая программа для работы?
Нужна программа для себя и всё что хотел сделал и работает.
Но нужна сортировка и вот из за неё этот кусок (с подсветкой) не могу закончить...
0
 Аватар для Worldmaster
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
24.11.2023, 21:03
Цитата Сообщение от Vladimirchy Посмотреть сообщение
кусок (с подсветкой)
Ну вот как то так можно.
Как я это вижу.
Миниатюры
DataGridViewRow временная подсветка изменяемых значений  
Вложения
Тип файла: 7z WindowsFormsApp1.7z (33.4 Кб, 4 просмотров)
0
0 / 0 / 0
Регистрация: 14.01.2023
Сообщений: 45
24.11.2023, 21:27  [ТС]
Цитата Сообщение от Worldmaster Посмотреть сообщение
Ну вот как то так можно.
Как я это вижу
Так у вас тут строки статичны, меняются только значения.
А если вклинить дополнительную строчку, место той, что в этот момент подсвечена красным, нумерация строк сбивается
0
 Аватар для Worldmaster
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
24.11.2023, 21:27
Ну или вот для нескольких столбцов.
На мой взгляд какая то тормозня. Наверное есть какой то более оптимизированный вариант. Например через WPF.
Но как минимально рабочее решение в лоб мне кажется норм. Врядли события у вас идут с частотой каждые 100мс.
Миниатюры
DataGridViewRow временная подсветка изменяемых значений  
Вложения
Тип файла: 7z WindowsFormsApp1.7z (34.2 Кб, 0 просмотров)
0
 Аватар для Worldmaster
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
24.11.2023, 21:28
Цитата Сообщение от Vladimirchy Посмотреть сообщение
что в этот момент подсвечена красным, нумерация строк сбивается
Какая разница. У вас же есть столбец id . меняйте строки как хотите.
Посмотрите код. Там есть столбец отдельный. по которому поиск будет осуществляться.
0
0 / 0 / 0
Регистрация: 14.01.2023
Сообщений: 45
24.11.2023, 21:32  [ТС]
Цитата Сообщение от Worldmaster Посмотреть сообщение
На мой взгляд какая то тормозня
Возможно из за перебора всех строк ?)

Добавлено через 44 секунды
Цитата Сообщение от Worldmaster Посмотреть сообщение
Какая разница. У вас же есть столбец id . меняйте строки как хотите.
Посмотрите код. Там есть столбец отдельный. по которому поиск будет осуществляться.
Хорошо, пересмотрю ещё раз.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3465 / 2785 / 576
Регистрация: 04.09.2018
Сообщений: 8,764
Записей в блоге: 3
24.11.2023, 21:36
Worldmaster, thread.sleep при "пересмотре" грида явно лишний... и окно тормозит.
0
 Аватар для Worldmaster
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
24.11.2023, 21:42
Цитата Сообщение от Vladimirchy Посмотреть сообщение
Возможно из за перебора всех строк ?)
Вы изначально тоже хотели таймер поставить. Перебор это не вариант. Нужен более эффективный поиск. WPF блин на раз это решил бы. Наверное и тут можно как то привязать модель к свойствам объекта.

Добавлено через 3 минуты
Цитата Сообщение от wizard41 Посмотреть сообщение
thread.sleep при "пересмотре" грида явно лишний... и окно тормозит.
Так он в потоке же. Тормозить должен отдельный таск но не основной гуй.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3465 / 2785 / 576
Регистрация: 04.09.2018
Сообщений: 8,764
Записей в блоге: 3
24.11.2023, 21:43
Цитата Сообщение от Worldmaster Посмотреть сообщение
Так он в потоке же
Нет, есть один в потоке GUI
0
 Аватар для Worldmaster
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
24.11.2023, 21:44
Цитата Сообщение от wizard41 Посмотреть сообщение
Нет, есть один в потоке GUI
Показывайте.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3465 / 2785 / 576
Регистрация: 04.09.2018
Сообщений: 8,764
Записей в блоге: 3
24.11.2023, 21:49
Цитата Сообщение от wizard41 Посмотреть сообщение
Нет, есть один в потоке GUI
Посмотрел внимательнее - обновление грида после отработки Task вызывает "торможение". Из цикла в обработчике button1_Click.
Лучше весь IncomingData запихивать в таску.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.11.2023, 21:49

Подсветка строк в datagridview в зависимости от значений в представлении в базе
Помогите реализовать вот такую мысль: 1 - есть два представления в базе SQL 2 - в datagridview через arraylist вывожу то одно...

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

Datagridviewrow.Vision - не срабатывает
Уважаемые мастера кода! Пожалуйста, укажите на ошибку! не отрабатывает правильно элементарный код и не могу понять почему: в...

Обвод контуром DataGridViewRow
Привет всем! Подскажите, пожалуйста, каким образом сделать так, чтобы вся активная строка моей DataGridView обводилась контуром...

Панели изменяемых размеров
Как создать Панели изменяемых размеров, чтобы за уголки можно было растягивать...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru