可以使用 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);
}