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