DataView 이벤트 처리

ListChangedDataView 이벤트를 사용하여 뷰가 업데이트되었는지 확인할 수 있습니다. 이벤트를 발생시키는 업데이트에는 원본으로 사용하는 테이블에서의 행 추가, 삭제 또는 수정과 원본으로 사용하는 테이블 스키마에서의 열 추가 또는 삭제, 그리고 부모 또는 자식 관계의 변경이 포함됩니다. 또한 ListChanged 이벤트는 애플리케이션의 새 정렬 순서나 필터로 인해 현재 사용자가 보고 있는 행 목록이 크게 변경되었는지 여부를 알려 줍니다.

ListChanged 이벤트는 System.ComponentModel 네임스페이스의 ListChangedEventHandler 대리자를 구현하며 ListChangedEventArgs 개체를 입력으로 받습니다. ListChangedEventArgs 개체의 ListChangedType 속성에 ListChangedType 열거형 값을 사용하면 발생한 변경의 유형을 확인할 수 있습니다. 행이 추가, 삭제 또는 이동함에 따라 추가되거나 이동한 행의 새 인덱스와 삭제된 행의 이전 인덱스는 ListChangedEventArgs 개체의 NewIndex 속성을 사용하여 액세스할 수 있습니다. 행이 이동한 경우 ListChangedEventArgs 개체의 OldIndex 속성을 사용하여 이동한 행의 이전 인덱스에 액세스할 수 있습니다.

또한 DataViewManager에서는 ListChanged 이벤트를 노출시켜 테이블이 추가되거나 제거되었는지, 또는 원본으로 사용하는 DataSetRelations 컬렉션이 변경되었는지를 알려 줍니다.

다음 코드 예에서는 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);  
}  

참고 항목