次の方法で共有


DataSet イベントの処理

DataSet オブジェクトには、DisposedInitializedMergeFailedの 3 つのイベントが用意されています。

MergeFailed イベント

DataSet オブジェクトの最も一般的に使用されるイベントはMergeFailedであり、マージされるDataSet オブジェクトのスキーマが競合しているときに発生します。 これは、ターゲットとソースの DataRow が同じ主キー値を持ち、 EnforceConstraints プロパティが true に設定されている場合に発生します。 たとえば、マージされるテーブルの主キー列が 2 つの DataSet オブジェクト内のテーブル間で同じである場合、例外がスローされ、 MergeFailed イベントが発生します。 MergeFailed イベントに渡されるMergeFailedEventArgs オブジェクトには、2 つのDataSet オブジェクト間のスキーマの競合を識別するConflict プロパティと、競合しているテーブルの名前を識別するTable プロパティがあります。

次のコード フラグメントは、 MergeFailed イベントのイベント ハンドラーを追加する方法を示しています。

AddHandler workDS.MergeFailed, New MergeFailedEventHandler( _  
  AddressOf DataSetMergeFailed)  
  
Private Shared Sub DataSetMergeFailed(  _  
  sender As Object,args As MergeFailedEventArgs)  
  Console.WriteLine("Merge failed for table " & args.Table.TableName)  
  Console.WriteLine("Conflict = " & args.Conflict)  
End Sub  
workDS.MergeFailed += new MergeFailedEventHandler(DataSetMergeFailed);  
  
private static void DataSetMergeFailed(  
  object sender, MergeFailedEventArgs args)  
{  
  Console.WriteLine("Merge failed for table " + args.Table.TableName);  
  Console.WriteLine("Conflict = " + args.Conflict);  
}  

初期化されたイベント

Initialized イベントは、DataSet コンストラクターがDataSetの新しいインスタンスを初期化した後に発生します。

DataSetが初期化を完了した場合、IsInitialized プロパティはtrueを返します。それ以外の場合は、falseを返します。 DataSetの初期化を開始する BeginInit メソッドは、IsInitializedfalse に設定します。 DataSetの初期化を終了する EndInit メソッドは、trueに設定します。 これらのメソッドは、別のコンポーネントで使用されている DataSet を初期化するために Visual Studio デザイン環境で使用されます。 コードでは一般的に使用しません。

Disposed イベント

DataSet は、 MarshalByValueComponent メソッドと DisposeDisposed イベントの両方を公開する クラスから派生します。 Disposed イベントは、コンポーネントで破棄されたイベントをリッスンするイベント ハンドラーを追加します。 Dispose メソッドが呼び出されたときにコードを実行する場合は、DataSetDisposed イベントを使用できます。 Dispose は、 MarshalByValueComponentによって使用されるリソースを解放します。

DataSetオブジェクトとDataTable オブジェクトはMarshalByValueComponentから継承され、リモート処理用のISerializable インターフェイスがサポートされます。 これらは、リモートで使用できる唯一の ADO.NET オブジェクトです。 詳細については、「 .NET リモート処理」を参照してください。

DataSetで使用できるその他のイベントについては、「DataTable イベントの処理」および「DataAdapter イベントの処理」を参照してください。

こちらも参照ください