已定义
dataGrid1,
dataGridTableStyle1,
dataGridTextBoxColumn1,
dataGridTextBoxColumn2,想更改dataGridTextBoxColumn1列的颜色为绿色,dataGridTextBoxColumn2列的颜色为红色,能不能实现?
要如何实现?谢谢!

解决方案 »

  1.   

    需要自定义一个继承自DataGridBoolColumn的类,加入protected  override void Paint(参数)事件
      

  2.   

    在dategrid的ItemDataBound类中
    Color myColor = Color.FromName("#FF0000");
    e.Item.ForeColor = myColor;
      

  3.   

    public class DataGridColorTextBoxColumn : DataGridTextBoxColumn
    {
    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
    {
    object o = this.GetColumnValueAtRow(source, rowNum);
    string ob = o.ToString().Trim();
    if( ob.Length > 0) //列值判断条件
    {
    backBrush = new SolidBrush(Color.Lime);
    foreBrush = new SolidBrush(Color.Magenta);
    }
    }
    finally
    {
    base.Paint(g, bounds, source, rowNum, backBrush, foreBrush, alignToRight);
    }
    }
    }
    然后在自定义style中
    ......
    DataGridColorTextBoxColumn columnStyle9=new DataGridColorTextBoxColumn();
    columnStyle9.MappingName="Lock";
    columnStyle9.Format= "";
    columnStyle9.FormatInfo = null;
    columnStyle9.HeaderText= "锁定";
    columnStyle9.Width=50;
    myStyle.GridColumnStyles.Add(columnStyle9);
    ......
      

  4.   

    感谢各位.
    感谢colaxu(飞翔) !