DataGridViewRow.DefaultCellStyle格式化

时间:2013-06-11 06:02:01

标签: c# datagridview datagridviewcellstyle

我在RowValidating的{​​{1}}事件中附加了此代码:

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; } 是否更改为红色。我尝试使用不会自动格式化特定行的ForeColorUpdate。我该如何解决这个问题?

3 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

您正在订阅错误的活动。我想,你需要这个:CellValueChanged

答案 2 :(得分: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;
}