可以使用 DataViewListChanged 事件来确定视图是否已经由于以下原因而被更新:添加、删除或修改基础表中的行;因添加或删除列而修改了基础表的架构;或者父关系或子关系发生更改。ListChanged 事件还将通知您所查看的行列表是否已经由于应用新的排序顺序或筛选器而发生重大更改。

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

DataViewManager 还会公开一个 ListChanged 事件来通知您是否已添加或移除表,或者是否已对基础 DataSetRelations 集合作出更改。

以下代码示例显示如何添加 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);
}