C# 拒绝更改时引发System.Data.DataTable事件

C# 拒绝更改时引发System.Data.DataTable事件,c#,system.data.datatable,C#,System.data.datatable,我有一个绑定到GUI的大型DataTable实例,DataTable旁边有一个专门的对象(我们称之为ValuesIndex),实现了对DataTable内容的快速访问。问题是我需要使ValuesIndex与DataTable的当前状态保持同步。 当DataTable中有一些值尚未被接受时,我需要将它们保存在ValuesIndex中。我还需要对RejectChanges做出正确的反应,以便整个ValuesIndex返回到其先前的状态 是否可以为DataTable实例设置事件处理程序,以便捕获拒绝的

我有一个绑定到GUI的大型DataTable实例,DataTable旁边有一个专门的对象(我们称之为ValuesIndex),实现了对DataTable内容的快速访问。问题是我需要使ValuesIndex与DataTable的当前状态保持同步。 当DataTable中有一些值尚未被接受时,我需要将它们保存在ValuesIndex中。我还需要对RejectChanges做出正确的反应,以便整个ValuesIndex返回到其先前的状态

是否可以为DataTable实例设置事件处理程序,以便捕获拒绝的更改? 我试图通过使用RowChanged事件来实现这一点,但我不能依赖它。如果我从表中删除一行,然后拒绝更改,则出于某种原因不会调用RowChanged事件

更新:
事实证明,我只是以错误的方式删除了行,而不是调用DataRow.Delete(),而是使用了DataTable.rows.Remove。在AcceptChanges和RejectChanges上都会触发RowChangeing事件

为什么要添加另一个需要维护和同步的层?
DataTable
提供了对其内容的访问,并提供了处理更改的事件。那么,如果您的类使一切变得更加复杂,那么它有什么好处呢?我需要能够快速找到一行或多行,其中x列的值为y。遍历表不是一个选项。但是,问题还不清楚。为什么不将
数据表作为私有属性保存在类中,并公开自己的方法、属性和事件?如果没有您的方法无法修改表格,则您可以完全控制您的计算。