次の方法で共有


Windows フォーム データ バインディングの変更通知

Windows フォーム データ バインディングの最も重要な概念の 1 つは、変更通知です。 データ ソースとバインドされたコントロールに常に最新のデータが含まれるようにするには、データ バインディングの変更通知を追加する必要があります。 具体的には、バインドされたコントロールがデータ ソースに加えられた変更を通知し、コントロールのバインドされたプロパティに加えられた変更がデータ ソースに通知されるようにする必要があります。

データ バインディングの種類に応じて、さまざまな種類の変更通知があります。

  • 単一のコントロール プロパティがオブジェクトの 1 つのインスタンスにバインドされる単純なバインド。

  • リスト ベースのバインド。リスト内の項目のプロパティにバインドされた単一のコントロール プロパティ、またはオブジェクトのリストにバインドされたコントロール プロパティを含めることができます。

さらに、データ バインディングに使用する Windows フォーム コントロールを作成する場合は、コントロールに PropertyNameChanged パターンを適用して、コントロールのバインドされたプロパティへの変更がデータ ソースに反映されるようにする必要があります。

シンプルバインディングの変更通知

単純なバインドの場合、ビジネス オブジェクトは、バインドされたプロパティの値が変更されたときに変更通知を提供する必要があります。 これを行うには、ビジネス オブジェクトの各プロパティの PropertyNameChanged イベントを公開し、ビジネス オブジェクトを BindingSource またはビジネス オブジェクトが INotifyPropertyChanged インターフェイスを実装し、プロパティの値が変更されたときに PropertyChanged イベントを発生させる優先メソッドを使用してコントロールにバインドします。 詳細については、「方法: INotifyPropertyChanged インターフェイスを実装する」を参照してください。 INotifyPropertyChanged インターフェイスを実装するオブジェクトを使用する場合は、BindingSource を使用してオブジェクトをコントロールにバインドする必要はありませんが、BindingSource を使用することをお勧めします。

リストベースのバインディング用の変更通知

Windows フォームは、バインドされたリストに依存して、バインドされたコントロールにプロパティの変更 (リスト アイテムのプロパティ値の変更) とリストの変更 (アイテムが削除またはリストに追加される) 情報を提供します。 そのため、データ バインディングに使用されるリストは、両方の種類の変更通知を提供する IBindingListを実装する必要があります。 BindingList<T> は、IBindingList の一般的な実装であり、Windows フォームのデータ バインディングで使用するように設計されています。 INotifyPropertyChanged を実装するビジネス オブジェクトの種類を含む BindingList<T> を作成すると、PropertyChanged イベントが ListChanged イベントに自動的に変換されます。 バインドされたリストが IBindingListでない場合は、BindingSource コンポーネントを使用して、オブジェクトのリストを Windows フォーム コントロールにバインドする必要があります。 BindingSource コンポーネントは、BindingList<T>と同様のプロパティからリストへの変換を提供します。 詳細については、「方法: BindingSource と INotifyPropertyChanged インターフェイスを使用して変更通知を発生させる」を参照してください。

カスタム コントロールの変更通知

最後に、コントロール側から、データにバインドするように設計された各プロパティの PropertyNameChanged イベントを公開する必要があります。 コントロール プロパティへの変更は、バインドされたデータ ソースに反映されます。 詳細については、「方法: PropertyNameChanged パターン を適用する」を参照してください。

関連項目