Behandeln von DataView-Ereignissen
Sie können das ListChanged-Ereignis von DataView verwenden, um festzustellen, ob eine Ansicht aktualisiert wurde. Zu den Updatevorgängen, die das Ereignis auslösen, zählen das Hinzufügen, Löschen oder Ändern einer Zeile in einer zugrundeliegenden Tabelle, das Hinzufügen oder Löschen einer Spalte im Schema der zugrundeliegenden Tabelle und das Ausführen von Änderungen an einer über- oder untergeordneten Beziehung. Das ListChanged-Ereignis benachrichtigt Sie auch, wenn sich die Liste der angezeigten Zeilen aufgrund einer neuen Sortierreihenfolge oder eines Filters wesentlich geändert hat.
Das ListChanged-Ereignis implementiert den ListChangedEventHandler-Delegaten des System.ComponentModel-Namespaces und akzeptiert als Eingabe ein ListChangedEventArgs-Objekt. Mit dem ListChangedType-Enumerationswert in der ListChangedType-Eigenschaft des ListChangedEventArgs-Objekts können Sie die Art der Änderung feststellen. Wenn bei einer Änderung Zeilen hinzugefügt, gelöscht oder verschoben wurden, können Sie mit der NewIndex-Eigenschaft des ListChangedEventArgs-Objekts auf den neuen Index der hinzugefügten oder verschobenen Zeile und den vorherigen Index der gelöschten Zeile zugreifen. Wenn es sich um eine verschobene Zeile handelt, können Sie mit der OldIndex-Eigenschaft des ListChangedEventArgs-Objekts auf den vorherigen Index der verschobenen Zeile zugreifen.
Der DataViewManager macht auch ein ListChanged-Ereignis verfügbar, um Sie zu benachrichtigen, wenn eine Tabelle hinzugefügt oder entfernt wurde oder wenn eine Änderung an der Relations-Auflistung des zugrunde liegenden DataSet vorgenommen wurde.
Das folgende Beispiel zeigt, wie Sie einen ListChanged-Ereignishandler hinzufügen.
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);
}