Вы не упомянули, как изменяется значение. Я использовал аналогичные функции, когда пользователь вводит значение. то есть вход и выход из режима редактирования.
Использование CellEndEdit Событие просмотра данных.
private void dgMapTable_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
double newInteger;
if (double.TryParse(dgMapTable[e.ColumnIndex,e.RowIndex].Value.ToString(), out newInteger)
{
if (newInteger < 0 || newInteger > 50)
{
dgMapTable[e.ColumnIndex, e.RowIndex].Style.BackColor = Color.Red;
dgMapTable[e.ColumnIndex, e.RowIndex].ErrorText
= "Keep value in Range:" + "0 to " + "50";
}
}
}
Вы можете добавить логику для очистки уведомления об ошибке аналогичным образом.
Если в вашем случае, если данные загружаются программно, то событие CellLeave может использоваться с тем же кодом.