Раскраска DataGridView, выключение ячейки в WinForms

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

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.

Enabling and Disabling a cell in a Datagridview


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>