BindingSource コンポーネントは、2 つの目的を果たします。1 つは、間接層、通貨管理、変更通知、およびその他のサービスを提供して、フォーム上のコントロールのデータへのバインディングを簡素化することです。これは、BindingSource コンポーネントをデータ ソースに結びつけ、フォーム上のコントロールを BindingSource コンポーネントにバインディングすることによって達成されます。以降のデータとの対話 (移動、並べ替え、フィルタ処理、更新など) は、BindingSource コンポーネントを呼び出すことによって実行します。
BindingSource コンポーネントが果たすもう 1 つの目的は、厳密に型指定されたデータ ソースとして機能することです。基底のデータ ソースの型は、通常、次の機構のうちいずれかを通じて固定されます。
どちらの機構を使用しても、厳密に型指定されたリストが作成されます。BindingSource は、DataSource プロパティと DataMember プロパティの設定に従い、単純データ バインディングと複合データ バインディングの両方をサポートします。
メモ |
|---|
| BindingSource は、単純データ ソースと複合データ ソースの両方を処理するので、用語上の問題が発生します。このクラスのドキュメントにおいて、リストという用語は、ホストされているデータ ソース内のデータのコレクションを指し、項目は、単一の要素を指すこととします。複合データ ソースの関連機能について説明するときは、同じ意味でテーブルおよび行という用語を使用します。 |
BindingSource には、基底のデータにアクセスするためのメンバが用意されています。現在の項目を取得する場合は Current プロパティを使用し、リスト全体を取得する場合は List プロパティを使用します。現在の項目の編集操作は、Current プロパティと、RemoveCurrent、EndEdit、CancelEdit、および Add の各メソッド、さらには AddNew メソッドを通じてサポートされています。現在性の管理は、基底のデータ ソースのすべての型について自動的に処理されますが、このクラスでは、CurrentItemChanged や DataSourceChanged などいくつかのイベントが公開されており、これによってカスタマイズが可能です。
BindingSource コンポーネントにバインドされたデータ ソースは、BindingNavigator クラスを通じてアクセスおよび管理することもできます。このクラスでは、ビデオ カセット レコーダー形式のユーザー インターフェイス (UI) を使用してリスト内の項目間を移動できます。BindingNavigator は任意のデータ ソースにバインドできますが、BindingNavigator.BindingSource プロパティを通じて BindingSource コンポーネントと統合することを前提にデザインされています。
BindingSource クラスの既定のプロパティは DataSource です。既定のイベントは CurrentChanged です。
注意 |
|---|
| BindingSource クラスの多くのメンバは、List プロパティで表される基底のリストの下で機能し、その操作を基底のリストに委託するだけです。このため、BindingSource を IList のカスタム実装とバインドした場合、これらのメンバの動作は、クラスのドキュメントに記載されている動作と厳密には異なる場合があります。たとえば、RemoveAt メソッドは、IList.RemoveAt を呼び出します。BindingSource のドキュメントにおける RemoveAt メソッドの説明は、基になる IList の RemoveAt メソッドが正しく実装されていることを前提としています。 |