Member 13476575 Ответов: 1

C# datagridview cellformating event не работает для всей строки


у меня есть событие userEventGrid_CellFormatting, чтобы изменить цвет задней ячейки, когда определенный текст существует в определенном столбце, и он работает нормально.
однако если я установлю значение Row back color вместо cell back color, то это не сработает, так как все строки back color в gridview будут изменены вместо только определенных строк.
Пожалуйста, помогите мне, что я делаю не так...?

Что я уже пробовал:

код для изменения заднего цвета ячейки (работает нормально)

private void usrEventGrid_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if (this.usrEventGrid.Columns[e.ColumnIndex].Name == "Update")
    {

        if (e.Value != null)
        {
            string stringValue = (string)e.Value;
            if (stringValue == "1A")
            {
                int rowIndex = (int)e.RowIndex;
                e.CellStyle.BackColor = Color.Pink;
            }
        }
    }


}



чтобы выделить всю строку, я изменил приведенный выше код с

e.CellStyle.BackColor = Color.Pink;


к

usrEventGrid.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Pink;



однако весь datagirdview выделяется вместо конкретной строки, пожалуйста, помогите

1 Ответов

Рейтинг:
10

0x01AA

Что ж CellFormatting будет обстреливаться за каждую клетку, которую нужно покрасить.

Первое, что вам нужно сделать, это проверить строку и установить цвет подсветки, если вы хотите.

Во-вторых, не забудьте установить цвет обратно в "нормальный", если вам не нужно, чтобы он был выделен, и если вы действительно хотите контролировать это с помощью DefaultCellStyle

Вывод: высветите ячейку/строку, проверив индекс строки, и используйте e.CellStyle.BackColor вместо DefaultCellStyle. Чем вам не нужно устанавливать цвет обратно в "нормальный"