Задача: в процессе выполнения программы раскрашивать отдельные ячейки грида и включать-выключать в зависимости от различных параметров.
Color disabledCellColor = Color.FromArgb(245, 245, 245);
foreach (DataGridViewRow currDGVRow in _someDataGridView.Rows)
{
string someInfo = Convert.ToString( currDGVRow.Cells["SOME_INFO"].Value);
if (someInfo != "")
{
currDGVRow.Cells["CHECKED"].ReadOnly = true;
currDGVRow.Cells["CHECKED"].Style.BackColor = disabledCellColor;
}
int someId = Convert.ToInt32( currDGVRow.Cells["SOME_ID"].Value );
if (someId > 100 )
{
currDGVRow.Cells["SOME_NUMBER"].ReadOnly = true;
currDGVRow.Cells["SOME_NUMBER"].Style.BackColor = disabledCellColor;
// вариант для раскраски всей строки
currDGVRow.DefaultCellStyle.BackColor = disabledCellColor;
}
}
Кроме достаточно простого кода раскраски и выключения надо внимательно отнестись к вызовам раскраски - грид может перерисовываться в различных ситуациях, например если форма вызывается через ShowDialog, раскраску надо вешать на изменение видимости формы VisibleChanged. Так же грид перерисовывается при сортировке - Sorted. Если форма может менять размер, то перерисовку надо повесить на ее событие Shown.