在使用 DataGrid 的時候,我們可能會需要在程式碼裡變動某些 Raws 的底色,在 .NET Framework 中的 DataGrid 中並沒有直接可以調用的方法,所以必需要對   DataGrid 的 Style 進行一些修改,然後覆寫其中的 Paint 事件。下面的範例是在網路上找到的,然後我進行一些簡單的修改,確實可以達到我所要的結果,當   TBK 欄位的值等於 “*” 的時候,變動 DataGrid 中該列的底色。
   public class ColoredDataGridTextBoxColumn : DataGridTextBoxColumn
   {
    public ColoredDataGridTextBoxColumn()
    {
    }
    protected override void Paint(System.Drawing.Graphics g,    
     System.Drawing.Rectangle bounds,    
     System.Windows.Forms.CurrencyManager source,    
     int rowNum,    
     System.Drawing.Brush backBrush,    
     System.Drawing.Brush foreBrush,    
     bool alignToRight)    
    {    
     try
     {    
      DataRowView v = (DataRowView)source.Current;
      string tbkValue = Convert.ToString(v.DataView.Table.Rows[rowNum][“TBK”]);
      // TBK
      if (tbkValue == “*”)
      {    
       backBrush = new LinearGradientBrush(bounds,    
        Color.FromArgb(0, 255, 255),    
        Color.FromArgb(0, 255, 255),    
        LinearGradientMode.BackwardDiagonal);    
       foreBrush = new SolidBrush(Color.Black);    
      }    
     }     
     catch(Exception){ /* empty catch */ }    
     finally
     {    
      base.Paint(g, bounds, source, rowNum, backBrush,    
       foreBrush, alignToRight);    
     }
    }
   }
[使用方法]
   DataGridTableStyle tableStyle = new DataGridTableStyle();
   tableStyle.MappingName = “tblItems”;
   int numCols = myDS.Tables[“tblItems”].Columns.Count;
   ColoredDataGridTextBoxColumn aColumnTextColumn ;
   for(int i = 0; i < numCols; ++i)
   {
    aColumnTextColumn = new ColoredDataGridTextBoxColumn();
    aColumnTextColumn.HeaderText = myDS.Tables[0].Columns[i].ColumnName;
    aColumnTextColumn.MappingName = myDS.Tables[0].Columns[i].ColumnName;
    tableStyle.GridColumnStyles.Add(aColumnTextColumn);
    System.Windows.Forms.Application.DoEvents();
   }
   DGItems.TableStyles.Clear();
   DGItems.TableStyles.Add(tableStyle);