可以使用 ListChanged 事件 DataView 来确定视图是否已更新。 引发事件的更新包括添加、删除或修改基础表中的行;向基础表的架构添加或删除列;和父关系或子关系的变化。 ListChanged 事件还会通知你,当你正在查看的行列表因应用新的排序顺序或筛选器而显著更改时。
ListChanged事件实现命名空间的System.ComponentModel委托,并接收ListChangedEventArgs对象作为输入。 可以使用 ListChangedType 对象的 ListChangedType 属性中的枚举值来确定发生了哪种类型的更改。 对于涉及添加、删除或移动行的更改,可以使用 ListChangedEventArgs 对象的 NewIndex 属性访问已添加或移动行的新索引和已删除行的上一个索引。 对于移动行,可以使用 ListChangedEventArgs 对象的 OldIndex 属性访问移动行的上一个索引。
DataViewManager 还会公开一个 ListChanged 事件,以通知你表是否已添加或删除,或者对基础 DataSet 的 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);
}