在单元格编辑时更改单元格背景颜色
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
如有任何帮助,我们将不胜感激。谢谢
您可以使用 DataGridView
的 EditingControlShowing
事件。
在 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;
}
我正在尝试将单元格背景色更改为白色,而在编辑单元格时背景色为红色。我已经尝试了 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
如有任何帮助,我们将不胜感激。谢谢
您可以使用 DataGridView
的 EditingControlShowing
事件。
在 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;
}