如果唯一的变化是一个新行,有没有办法阻止 myDataSet.HasChanges() 返回 true ?

Is there a way to stop myDataSet.HasChanges() returning true if the only change is a new row?

我的 Form 上有一个 Button,单击它会调用 myBindingSource.AddNew()。与在该新行上设置值相关的控件随后变为可见。

Form 的关闭事件上我调用 myDataSet.HasChanges() 如果它 returns True,我提示用户是否要保存更改他们做到了。

在用户单击添加新行但随后关闭表单(无论出于何种原因)而未设置任何值的情况下,myDataSet.HasChanges() 显然会 return True因为添加了新行。

我想要的是一种实现方式 return False 如果唯一的变化是一个新行。

我试过在 myBindingSource.AddNew() 之后立即调用 myBindingSource.EndEdit() 然后 myDataSet.AcceptChangesmyDataSet.HasChanges() 仍然 returns True.

我认为通过调用 myDataSet.AcceptChanges() 它基本上可以清除历史记录,并且只有在该点之后所做的更改才会被拾取。

或者如果有更好的方法,我想听听。

我热衷于在提示保存时只一次保存回 DataBase 的想法,而不是在 Button.Click 上插入新行并在每个值上更新该行改变。

比我的评论更具体:

If myDataSet.HasChanges(DataRowState.Deleted Or DataRowState.Modified) Then