28.4 Events Reference
ListChangedEventHandler ListChanged;
|
|
Fires when the information in a DataView changes,
including when DataRowView objects are added,
deleted, modified, or moved. This event provides a
ListChangedEventArgs object with information about
the type of change, and the old and new index of the item, if
appropriate. This event is rarely used in application programming (in
which case the DataTable events are much more
useful) but is typically reserved for creating custom data bound
controls.
Event Argument
- ListChangedEventArgs e
-
Exposes three properties. ListChangedType provides
an enumerated value that indicates how the list changed.
NewIndex and OldIndex indicate
where an item moved, if the event is in response to a single row
change. For example, if an item is moved from position 0 to position
1, NewIndex is 1, and OldIndex
is 0. If an item is deleted, NewIndex contains the
former index of the deleted item, and OldIndex
isn't used.
Table 28-2 lists the valid values for the
ListChangedType enumeration.
Table 28-2. ListChangedType values
ItemAdded
|
An item was added to the list at position NewIndex.
|
ItemChanged
|
The item at NewIndex was changed.
|
ItemDeleted
|
The item at NewIndex was deleted.
|
ItemMoved
|
An item moved in the list from OldIndex to
NewIndex.
|
PropertyDescriptorAdded,
PropertyDescriptorChanged, and
PropertyDescriptorDeleted
|
A PropertyDescriptor was added, changed, or
deleted, and this changed the schema.
|
Reset
|
The list has changed substantially. Any listeners should reread the
entire DataView.
|
Example
Here's an example that handles the
ListChanged event and displays some information to
a debug window:
private void OnListChanged(object sender, ListChangedEventArgs args)
{
Debug.WriteLine("ListChanged:");
Debug.WriteLine("\t Type = " + args.ListChangedType);
Debug.WriteLine("\tOldIndex = " + args.OldIndex);
Debug.WriteLine("\tNewIndex = " + args.NewIndex);
}
Note
If you make a change that affects multiple rows, such as changing the
Sort order, the DataView
doesn't fire one ListChanged
event for each row. Instead, it fires a
ListChanged event with a
ListChangedType of
Reset.
|