处理 DataView 事件

可以使用 ListChanged 事件 DataView 来确定视图是否已更新。 引发事件的更新包括添加、删除或修改基础表中的行;向基础表的架构添加或删除列;和父关系或子关系的变化。 如果查看的行列表因应用新的排序顺序或筛选器而发生了重大更改,该 ListChanged 事件还会通知你。

ListChanged 事件实现了 System.ComponentModel 命名空间中的 ListChangedEventHandler 委托,并以 ListChangedEventArgs 对象作为输入。 可以使用对象属性ListChangedType中的ListChangedType枚举值来确定发生了ListChangedEventArgs哪种类型的更改。 对于涉及添加、删除或移动行的更改,可以使用对象的属性NewIndex访问ListChangedEventArgs添加或移动行的新索引和已删除行的上一个索引。 对于移动行,可以使用对象的属性OldIndex访问ListChangedEventArgs移动行的上一个索引。

此外,还会 DataViewManager 公开一个 ListChanged 事件,以通知你表是否已添加或删除,或者是否已对 Relations 基础 数据集的集合进行更改。

下面的代码示例演示如何添加 ListChanged 事件处理程序。

AddHandler custView.ListChanged, _
  New System.ComponentModel.ListChangedEventHandler( _
  AddressOf OnListChanged)

Private Shared Sub OnListChanged( _
  sender As Object, args As System.ComponentModel.ListChangedEventArgs)
  Console.WriteLine("ListChanged:")
  Console.WriteLine(vbTab & "    Type = " & _
    System.Enum.GetName(args.ListChangedType.GetType(), _
    args.ListChangedType))
  Console.WriteLine(vbTab & "OldIndex = " & args.OldIndex)
  Console.WriteLine(vbTab & "NewIndex = " & args.NewIndex)
End Sub
custView.ListChanged  += new
  System.ComponentModel.ListChangedEventHandler(OnListChanged);

protected static void OnListChanged(object sender,
  System.ComponentModel.ListChangedEventArgs args)
{
  Console.WriteLine("ListChanged:");
  Console.WriteLine("\t    Type = " + args.ListChangedType);
  Console.WriteLine("\tOldIndex = " + args.OldIndex);
  Console.WriteLine("\tNewIndex = " + args.NewIndex);
}

另请参阅