如何在关闭表单之前强制执行DataGridView单元格验证?

时间:2019-02-21 14:50:14

标签: c# winforms datagridview

我有一个DataGridView我可以编辑。编辑后,当我单击Enter或选择另一个单元格时,会发生CellValueChanged事件,并保存此新值。

我的问题:如果我更改单元格值并关闭表格而没有单击Enter或之前选择另一个单元格,则不会保存该最后一个值。

有办法解决吗?

3 个答案:

答案 0 :(得分:1)

假设您有一个DataTable中的一个DataSource和一个DataGridView,然后使用以下代码进行验证并结束编辑:

this.Validate();
dataGridView1.BindingContext[yourDatTable].EndCurrentEdit();

答案 1 :(得分:0)

首先检查“ CellValueChanged”事件的工作方式。我认为在您关闭表单时不会触发该事件。我会做的是,当您关闭Form时,会触发“ FormClosing”事件,它会调用一个方法(“ SaveThisNewValue()”)来保存您的值。保存值的方法也用于“ cellValueChanged”事件

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        SaveThisNewValue();
    }

    private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
    {
        SaveThisNewValue();
    }

    private void SaveThisNewValue()
    {
        //saves the cell value
    }

答案 2 :(得分:0)

grid.EndEdit()在表单关闭事件中为我工作。