public class DataGridEx : DataGrid
     {
       ..........
       protected override void OnPaint(PaintEventArgs e){
       base.OnPaint(e);//继承原始绘制动作
       System.Windows.Forms.DataGrid.HitTestInfo myHitTest;
       myHitTest = this.HitTest(e.ClipRectangle.X,e.ClipRectangle.Y);
       //检查是否为cell
       if(myHitTest.Type==System.Windows.Forms.DataGrid.HitTestType.Cell){
         try{
           //这里myHitTest.Row Column 分别表示行和列的索引你可以取得值写判断了
           string s = dataGrid[myHitTest.Row,myHitTest.Column].ToString();
           //下面是绘制动作
           RectangleF ef1;
           Rectangle rectangle1 = this.GetCellBounds(myHitTest.Row,myHitTest.Column);
           SolidBrush brush1 = new SolidBrush(this.dataGrid.BackColor);
           StringFormat format1 = new StringFormat();
           brush1.Color = this.dataGrid.BackColor;
           e.Graphics.FillRectangle(brush1, rectangle1);
           brush1.Color = Color.Red;
           ef1 = new RectangleF((float) rectangle1.X, (float) (rectangle1.Y + 2), (float) rectangle1.Width, (float) (rectangle1.Height - 2));
           e.Graphics.DrawString(s,dataGrid.Font,brush1,ef1,format1);
         }catch{;}
       }