C# 验证失败时的DataGridView默认值

C# 验证失败时的DataGridView默认值,c#,validation,datagridview,C#,Validation,Datagridview,我正在使用DataGridView文本列。该列绑定到DataTable中的十进制列 如果我编辑单元格使其有一个空值,然后将其制表,我会得到一个关于解析十进制数问题的异常 我理解为什么会发生这种情况,为了解决这个问题,我只想强制值为“0.00”,但我似乎无法让它工作 我尝试了以下方法,但无效: private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) { i

我正在使用DataGridView文本列。该列绑定到DataTable中的十进制列

如果我编辑单元格使其有一个空值,然后将其制表,我会得到一个关于解析十进制数问题的异常

我理解为什么会发生这种情况,为了解决这个问题,我只想强制值为“0.00”,但我似乎无法让它工作

我尝试了以下方法,但无效:

private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
    if (e.ColumnIndex == amountIdx)
    {
        if (e.FormattedValue == "")
            dataGridView1[e.ColumnIndex, e.RowIndex].Value = "0.00";
    }
}
我可以设置e.Cancel=true,而不是设置值,但这只会让它处于编辑模式,这不是我真正想要的。

更改:

if (e.FormattedValue == "")
    dataGridView1[e.ColumnIndex, e.RowIndex].Value = "0.00";
致:


我想出来了。该值似乎在CellValidating激发后重置。我没有更新实际的基础值,而是将EditingControl设置回“0.00”。通过完成CellValidation后,新值将保存到数据源

if (e.FormattedValue == "")
    dataGridView1[e.ColumnIndex, e.RowIndex].Value = "0.00m";