我的想法是:遍历datagridview,根据this.gi.graduated中的毕业生姓名确定毕业生所在行的行数,再对该行的颜色进行设置,但是显示出颜色仍旧是[Empty],而WriteLine()出来的结果已经修改了颜色为[Red],请高人指点下!
代码如下:    
public void PrintColor() 
{
    foreach (String name in this.gi.graduated)  
    {
         for (int i = 0; i < this.dataGridView.Rows.Count; i++)
         {
               if (this.dataGridView.Rows[i].Cells[0].Value.ToString().Equals(name))
               {
                     this.dataGridView.Rows[i].DefaultCellStyle.ForeColor = Color.Red;
                     Console.WriteLine(this.dataGridView.Row[i].DefaultCellStyle.ForeColor.ToString());
                     break;
               }
         }
    }
}

解决方案 »

  1.   

    这个问题已经解决,使用DataBandingComplete事件就可以了.
    private void dataGridView_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
    {
        for (int i = 0; i < this.dataGridView.Rows.Count; i++)
        {
             foreach (String s in this.gi.graduated)
             {
                  if (this.dataGridView.Rows[i].Cells[0].Value.ToString().Equals(s))
                  {
                       this.dataGridView.Rows[i].DefaultCellStyle.BackColor = Color.Red;
                       this.dataGridView.Refresh();
                       break;
                  }
             }
        }
    }
    但是仍然有疑惑,如果在上面的PrintColor()中添加this.dataGridView.DefaultCellStyle.BackColor = Color.Red;
    颜色就会发生变化,为什么这条语句却可以修改并显示出颜色?还有Refresh()方法怎么不可以起到DataBandingComplete的效果
      

  2.   

    this.dataGridView.DefaultCellStyle.BackColor = Color.Red; 
    这个是影响整个dataGridView默认单元格风格 跟你单独设置某一行样式原理不太一样,
    还有Refresh()方法怎么不可以起到DataBandingComplete的效果
    DataBandingComplete事件只在需重新绑定数据源的时候触发,如排序,数据库重新绑定等