如果想让选中DataGridview的行显示不同颜色,就要通过DataGridview控件RowPerpaint事件中重新设置所选行的DefauleCellStyle属性来实现
private void dataGridView1_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
//判断 当前索引值是否大于等于DataGridview中行的个数减去1
if (e.RowIndex>=dataGridView1.Rows.Count - 1)
{
return;
}
//定一个前景颜色
Color forecolor = new Color();
//定义一个背景颜色
Color backcolor = new Color();
//var 所有类的值类型 object 所有类的引用类型
var row = dataGridView1.Rows[e.RowIndex];
//如果 当前行等于表格当前行
if (row==dataGridView1.CurrentRow)
{
//如果当前行默认的前景颜色不等于白色
if (row.DefaultCellStyle.ForeColor != Color.White)
{
forecolor = row.DefaultCellStyle.ForeColor;
//当前行默认前景颜色等于白色
row.DefaultCellStyle.ForeColor = Color.White;
}
if (row.DefaultCellStyle.BackColor != Color.Blue)
{
backcolor = row.DefaultCellStyle.BackColor;
row.DefaultCellStyle.BackColor = Color.Blue;
}
}
//如果当前行不等于表格的行
else
{
//当前行的默认背景颜色等于定义的变量颜色
row.DefaultCellStyle.BackColor = backcolor;
row.DefaultCellStyle.ForeColor = forecolor;
}
private void dataGridView1_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e) { //判断 当前索引值是否大于等于DataGridview中行的个数减去1 if (e.RowIndex>=dataGridView1.Rows.Count - 1) { return; } //定一个前景颜色 Color forecolor = new Color(); //定义一个背景颜色 Color backcolor = new Color(); //var 所有类的值类型 object 所有类的引用类型 var row = dataGridView1.Rows[e.RowIndex]; //如果 当前行等于表格当前行 if (row==dataGridView1.CurrentRow) { //如果当前行默认的前景颜色不等于白色 if (row.DefaultCellStyle.ForeColor != Color.White) { forecolor = row.DefaultCellStyle.ForeColor; //当前行默认前景颜色等于白色 row.DefaultCellStyle.ForeColor = Color.White; } if (row.DefaultCellStyle.BackColor != Color.Blue) { backcolor = row.DefaultCellStyle.BackColor; row.DefaultCellStyle.BackColor = Color.Blue; } } //如果当前行不等于表格的行 else { //当前行的默认背景颜色等于定义的变量颜色 row.DefaultCellStyle.BackColor = backcolor; row.DefaultCellStyle.ForeColor = forecolor; }