Windows フォームがサポートするデータ ソース
従来、データ バインディングは、データベースに格納されたデータをアプリケーション内で利用するために使用されてきました。 Windows フォームのデータ バインディングでは、データベースのデータだけでなく、配列やコレクションなど、一定の条件を満たす他の構造のデータにもアクセスできます。
バインドできる構造
Windows フォームでは、シンプル オブジェクトに対するバインド (単純バインディング) から、ADO.NET データ テーブルなどの複雑なリストに対するバインド (複合バインディング) まで、さまざまな構造にバインドできます。 単純バインディングでは、Windows フォームは、シンプル オブジェクトのパブリック プロパティに対するバインディングをサポートしています。 Windows フォームのリストベース バインディングでは、一般に、オブジェクトが IList インターフェイスまたは IListSource インターフェイスをサポートしていることが必要です。 加えて、BindingSource コンポーネントを通じてバインドする場合には、IEnumerable インターフェイスをサポートするオブジェクトに対してバインドできます。 データ バインディングに関連するインターフェイスの詳細については、「データ連結に関連するインターフェイス」を参照してください。
次に示すのは、Windows フォームでバインドできる構造の一覧です。
BindingSource
BindingSource は、Windows フォームのデータ ソースとしては最も一般的で、データ ソースと Windows フォーム コントロールの間のプロキシの役割を果たします。 BindingSource の使用パターンとしては、コントロールを BindingSource にバインドし、BindingSource をデータ ソース (たとえば、ADO.NET データ テーブルやビジネス オブジェクト) にバインドするという形が一般的です。 BindingSource は、データ バインディングのサポートを実現し、そのレベルを向上させるサービスを備えています。 たとえば、Windows フォームのリストベースのコントロール (DataGridView や ComboBox など) は、IEnumerable データ ソースへのバインディングを直接的にはサポートしていませんが、BindingSource を通じてバインドすることにより、それが可能になります。 この場合、BindingSource はデータ ソースを IList に変換します。シンプル オブジェクト
Windows フォームは、コントロールのプロパティをオブジェクト インスタンスのパブリック プロパティにバインドする、Binding 型を使用したデータ バインディングをサポートします。 また、Windows フォームは、BindingSource を使用したときには、リストベースのコントロール (ListControl など) からオブジェクト インスタンスへのバインディングをサポートします。配列またはコレクション
リストをデータ ソースとして使用するためには、IList インターフェイスを実装する必要があります。その一例は、Array クラスのインスタンスである配列です。 配列の詳細については、「方法: オブジェクトの配列を作成する (Visual Basic)」を参照してください。一般に、データ バインディング用のオブジェクトのリストを作成するときは、BindingList<T> を使用する必要があります。 BindingList<T> は IBindingList インターフェイスのジェネリック バージョンです。 IBindingList インターフェイスは、IList インターフェイスを拡張したもので、双方向のデータ バインディングに必要なプロパティ、メソッド、およびイベントが追加されています。
IEnumerable
Windows フォーム コントロールは、BindingSource コンポーネントを通じてバインドする場合には、IEnumerable インターフェイスのみをサポートするデータ ソースにバインドできます。ADO.NET データ オブジェクト
ADO.NET には、バインディングに適したデータ構造がいくつか用意されています。 各データ構造は、洗練の度合いと複雑さにおいてそれぞれ異なります。DataColumn. 1 つのテーブルは複数の列で構成されるという点で、DataColumn は DataTable の基本的なビルド ブロックです。 各 DataColumn オブジェクトには DataType プロパティがあります。このプロパティは、列に保持されるデータの種類 (自動車を表すテーブルの場合は自動車の型など) を決定します。 データ テーブル内の列に、コントロール (TextBox コントロールの Text プロパティなど) を単純バインドできます。
DataTable. DataTable は、行と列で構成される、ADO.NET のテーブルの表現です。 データ テーブルは、DataColumn と DataRow という 2 つのコレクションを持ちます。前者は、当該のテーブルのデータの列を表し、そのテーブルに入力できるデータの種類は最終的にはこれにより決まります。後者は、当該のテーブルの行を表します。 データ テーブルに含まれる情報に対して、コントロールを複合バインドできます (たとえば、DataGridView コントロールからデータ テーブルに対するバインドなど)。 ただし、DataTable にバインドすると、実際にはテーブルの既定のビューにバインドされます。
DataView. DataView は、1 つのデータ テーブルのカスタマイズされたビューであり、フィルター処理や並べ替えを行うことができます。 データ ビューは、複合連結コントロールで使用するデータの "スナップショット" です。 データ ビュー内のデータには単純バインドまたは複合バインドできますが、バインドしているのはクリーンな最新の状態のデータ ソースではなく、データの固定された "画像" であることに注意してください。
DataSet. DataSet は、データベース内のデータのテーブル、リレーションシップ、および制約のコレクションです。 データセット内のデータには単純バインドまたは複合バインドできますが、バインドしているのは DataSet の既定の DataViewManager (次の項目を参照) に対してであることに注意してください。
DataViewManager. DataViewManager は、DataSet 全体のカスタマイズされたビューです。DataView に似ていますが、リレーションシップが含まれています。 DataViewSettings コレクションを使用すると、指定したテーブルに対して DataViewManager に設定されているビューに、既定のフィルターや並べ替えオプションを設定できます。