以编程方式更改DataGridView单元格值
本文关键字:单元格 DataGridView 编程 方式更 | 更新日期: 2024-09-17 00:41:15
我有一个datagridview,它有一个数据表作为数据源。我需要手动更改一些单元格值。例如,如果单元格输入值包含字符"g",则当我离开单元格时,它必须自动更改"abc"。以下代码检查当前单元格的格式化值:
private void dgwPNotlar_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
if (e.ColumnIndex<2||e.ColumnIndex>4||e.FormattedValue.ToString()=="")
{
return;
}
if (e.FormattedValue.ToString().Contains('G')||e.FormattedValue.ToString().Contains('g'))
{
dgwPNotlar.EditMode = DataGridViewEditMode.EditProgrammatically;
dgwPNotlar.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = "abc";
dgwPNotlar.EndEdit();
dgwPNotlar.EditMode = DataGridViewEditMode.EditOnEnter;
return;
}
}
当代码"dgwPNotlar.EndEdit();"运行时,我更改的单元格值为"abc",返回到以前的值"g"或"g"。。
有什么想法吗?
单元格的更改需要在验证事件之后发生,因此请尝试CellValidated事件:
void dgv_CellValidated(object sender, DataGridViewCellEventArgs e) {
string cellValue = dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].FormattedValue.ToString();
if (cellValue.Contains('G') || cellValue.Contains('g')) {
dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = "abc";
}
}
以下是我在VB中应用他的解决方案的代码:
Private Sub dataGridView_CellValidated(sender As Object, e As DataGridViewCellEventArgs) Handles dataGridView.CellValidated
Dim cellValue As String = dataGridView.Rows(e.RowIndex).Cells(e.ColumnIndex).FormattedValue.ToString()
If (cellValue.Contains(".")) Then
cellValue = cellValue.Replace(".", ",")
dataGridView.Rows(e.RowIndex).Cells(e.ColumnIndex).Value = cellValue
End If
End Sub