在你的代码之前添加:
if (e.ColumnIndex < 0 || e.RowIndex < 0)
return;
另外 click 后,被选中的单元格,还有个 SelectionBackColor 设置。
其实上面那条语句一起生效,之所以看不出来效果是因为,那一行处于选中状态,显示的是默认选择的颜色,当你再点另外一行的时,就可以看出背景色已经改变了。
设置CellClick就可以了,我用你的代码this.dgvDisplay.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.BackColor = Color.Red;没有问题,你看看是不是你其他地方的代码有问题
dataGridView1.DefaultCellStyle.SelectionForeColor = Color.Red;
dataGridView1.DefaultCellStyle.SelectionBackColor = Color.Green;
这样的方法就可以。