在单元格编辑时更改单元格背景颜色

Change Cell BackColor on Cell Edit

我正在尝试将单元格背景色更改为白色,而在编辑单元格时背景色为红色。我已经尝试了 cellvaluechanged 和 currentcelldirtystatechanged,但是在我离开单元格之前背景色不会改变,而我希望单元格背景色在我开始编辑时改变。我可能在这里遗漏了一些小东西,但似乎无法弄清楚。以下是我一直在尝试的方法,但如上所述不起作用。

    Private Sub dgvdefault_cellvaluechanged(sender As Object, e As DataGridViewCellEventArgs)
    If dgvdefault.Rows(e.RowIndex).Cells(e.ColumnIndex).Style.BackColor = colorfielderror Then
        dgvdefault.Rows(e.RowIndex).Cells(e.ColumnIndex).Style.BackColor = colorfieldentry
    End If
End Sub

Private Sub dgvdefault_currentcelldirtystatechanged(sender As Object, e As EventArgs)
    If dgvdefault.CurrentCell.Style.BackColor = colorfielderror Then
        dgvdefault.CurrentCell.Style.BackColor = colorfieldentry
    End If
End Sub

如有任何帮助,我们将不胜感激。谢谢

您可以使用 DataGridViewEditingControlShowing 事件。 在 C# 中,您将拥有:

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
    if (e.Control is TextBox)
        ((TextBox)e.Control).TextChanged += TextBoxCell_TextChanged;
}

private void TextBoxCell_TextChanged(object sender, EventArgs e)
{
    ((TextBox)sender).BackColor = Color.Red;
}