我的想法是:遍历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;
}
}
}
}
代码如下:
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;
}
}
}
}
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的效果
这个是影响整个dataGridView默认单元格风格 跟你单独设置某一行样式原理不太一样,
还有Refresh()方法怎么不可以起到DataBandingComplete的效果
DataBandingComplete事件只在需重新绑定数据源的时候触发,如排序,数据库重新绑定等