0

我在RowValidatinga 事件中附加了此代码DataGridView

private void dgvSrc_RowValidating(object sender, DataGridViewCellCancelEventArgs e)
{
    DataGridView dgv = sender as DataGridView;

    if (dgv.Rows[e.RowIndex].Cells["fullPath"].Value.ToString().Equals("none"))
        dgv.Rows[e.RowIndex].DefaultCellStyle.ForeColor = Color.Red;
    else
        dgv.Rows[e.RowIndex].DefaultCellStyle.ForeColor = Color.Black;
}

这有效但不是自动的,您需要先聚焦或单击,然后选择另一行以查看其ForeColor是否更改为红色。我尝试使用它UpdateRefresh不会自动格式化特定的行。我怎样才能解决这个问题?

4

3 回答 3

1

使用CellFormatting事件DataGridView

dgv.CellFormatting += dgv_CellFormatting

像处理它

void dgv_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if(dgv.Rows[e.RowIndex].Cells["fullPath"].Value.ToString().Equals("none"))
      dgv.Rows[e.RowIndex].DefaultCellStyle.ForeColor = Color.Red;
    else
      dgv.Rows[e.RowIndex].DefaultCellStyle.ForeColor = Color.Black;
}
于 2013-06-11T06:42:32.453 回答
0

您订阅了错误的事件。我想,你需要这个:CellValueChanged

于 2013-06-11T06:20:36.060 回答
0

您可以在您的 dgv RowPrePaint 事件中执行此操作..

Private void dgvSrc_RowPrePaint(object sender, DataGridViewCellCancelEventArgs e)
{
DataGridView dgv = sender as DataGridView;

if (dgv.Rows[e.RowIndex].Cells["fullPath"].Value.ToString().Equals("none"))
    dgv.Rows[e.RowIndex].DefaultCellStyle.ForeColor = Color.Red;
else
    dgv.Rows[e.RowIndex].DefaultCellStyle.ForeColor = Color.Black;
}
于 2013-06-12T01:06:17.943 回答