Я только что исследовал эту проблему (поэтому я знаю, что этот вопрос был опубликован почти 3 года назад, но, может быть, он кому-нибудь поможет ...), но, похоже, лучше разместить код внутри события RowPrePaint
чтобы вам не приходилось обходить каждую строку, только те, которые были нарисованы (поэтому при больших объемах данных он будет работать намного лучше:
Прикрепить к событию
this.dataGridView1.RowPrePaint
+= new System.Windows.Forms.DataGridViewRowPrePaintEventHandler(
this.dataGridView1_RowPrePaint);
Код события
private void dataGridView1_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
if (Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[7].Text) < Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[10].Text))
{
dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Beige;
}
}