DataView イベントの処理
ListChanged の DataView イベントを使用して、ビューが更新されているかどうかを確認できます。 基になるテーブルの行の追加、削除、または変更や、このスキーマの列の追加または削除、親子のリレーションシップの変更など、これらの更新を行うとこのイベントが発生します。 さらに、現在表示されている行のリストが新しい並べ替え順序またはフィルターの適用により大幅に変更された場合、ListChanged イベントではそのことも通知されます。
ListChanged イベントは、System.ComponentModel 名前空間の ListChangedEventHandler デリゲートを実装し、ListChangedEventArgs オブジェクトを入力として受け取ります。 発生した変更の内容を確認するには、ListChangedEventArgs オブジェクトの ListChangedType プロパティの ListChangedType 列挙値を使用します。 行の追加、削除、または移動による変更の場合、追加された行または移動された行の新しいインデックスと削除された行の古いインデックスには、ListChangedEventArgs オブジェクトの NewIndex プロパティを使用してアクセスできます。 移動された行の場合、移動前の古いインデックスにアクセスするには ListChangedEventArgs オブジェクトの OldIndex プロパティを使用します。
DataViewManager では、さらにテーブルが追加または削除された場合に、または基になる DataSet の Relations コレクションが変更された場合に、そのことを通知するために ListChanged イベントが公開されます。
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);
}