Задача: в процессе выполнения программы раскрашивать отдельные ячейки грида и включать-выключать в зависимости от различных параметров.
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.