C#编程-76:DataGridView当前行显示不同颜色

var       值类型
object 引用类型

实现效果:

C#编程-76:DataGridView当前行显示不同颜色

实现代码:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. namespace DataGridViewColor
  11. {
  12.     public partial class Form1 : Form
  13.     {
  14.         public Form1()
  15.         {
  16.             InitializeComponent();
  17.         }
  18.  
  19.         private void Form1_Load(object sender, EventArgs e)
  20.         {
  21.             // TODO:  这行代码将数据加载到表“companyDataSet.clerk”中。您可以根据需要移动或删除它。
  22.             this.clerkTableAdapter.Fill(this.companyDataSet.clerk);
  23.  
  24.         }
  25.  
  26.         private void dataGridView1_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
  27.         {
  28.             //判断索引有效范围
  29.             if(e.RowIndex>=dataGridView1.Rows.Count-1) return;
  30.  
  31.             //存储原来的颜色值
  32.             Color oldForeColor = new Color();
  33.             Color oldBackColor = new Color();
  34.  
  35.             //判断传入的行是否为当前选中行
  36.             var row=dataGridView1.Rows[e.RowIndex];
  37.             if (row == dataGridView1.CurrentRow)
  38.             {
  39.                 //设置前景色
  40.                 if (row.DefaultCellStyle.ForeColor != Color.White)
  41.                 {
  42.                     oldForeColor = row.DefaultCellStyle.ForeColor;
  43.                     row.DefaultCellStyle.ForeColor = Color.White;
  44.                 }
  45.                 //设置背景色
  46.                 if (row.DefaultCellStyle.BackColor != Color.Blue)
  47.                 {
  48.                     oldBackColor = row.DefaultCellStyle.BackColor;
  49.                     row.DefaultCellStyle.BackColor = Color.Blue;
  50.                 }
  51.  
  52.             }
  53.             //未选中则恢复原来的颜色
  54.             else
  55.             {
  56.                 row.DefaultCellStyle.ForeColor = oldForeColor;
  57.                 row.DefaultCellStyle.BackColor = oldBackColor;
  58.             }
  59.         }
  60.     }
  61. }