У меня есть DataGridView
в моей заявке на форму. После получения данных из таблицы в базе данных и отображения их в DataGridView
я применяю зеленый цвет к BackColor некоторых ячеек строк, если выполняется определенное условие. После того, как эти ячейки становятся зелеными, программа заставляет их выполнить другое условие, которое окрашивает всю строку в BackColor красный цвет, если они не удовлетворяют условиям состояние.
Однако кажется, что предварительно окрашенные ячейки не могут быть перезаписаны новым цветом. Даже если я применю следующий код, чтобы раскрасить всю строку в красный цвет, он будет работать только для ячеек, которые не были предварительно окрашены.
for(int i=0; i<myDataGridview.Rows.Count; i++){
if(/*a certain condition FAILS*/){
myDataGridView.Rows[i].DefaultCellStyle.BackColor = Color.Red;
}
}
Прямо сейчас я окрашиваю эти предварительно окрашенные ячейки в красный одну за другой, но это требует много времени и кода, например:
for(int i=0; i<myDataGridview.Rows.Count; i++){
if(/*a certain condition FAILS*/){
//Trying to color the whole row RED, but not working
myDataGridView.Rows[i].DefaultCellStyle.BackColor = Color.Red;
//Manually color the cells, which are pre-colored to green, RED
myDataGridView.Rows[i].Cells[6].Style.BackColor = Color.Red;
myDataGridView.Rows[i].Cells[7].Style.BackColor = Color.Red;
....
myDataGridView.Rows[i].Cells[13].Style.BackColor = Color.Red;
myDataGridView.Rows[i].Cells[16].Style.BackColor = Color.Red;
}
}
Мне интересно, есть ли лучший способ переопределить backColor. Может кто-нибудь помочь?
Вот пример (имитация) DataGridView.
Те, кто не выполнили первое условие, автоматически получают красный цвет, и это работает. Однако, если они проходят первое условие и получают свою ячейку «Пройдено1» зеленым цветом, а затем не выполняют второе условие, как вы можете видеть, эти ячейки остаются зелеными. Я хочу покрасить всю строку в красный цвет, даже заменив предварительно окрашенную в зеленый цвет ячейкой на красный.
CellPainting
. Если вы кодируете полный набор условий, этого должно быть достаточно. - person TaW   schedule 21.09.2017