Windows フォームがサポートするデータ ソース

更新 : 2007 年 11 月

従来、データ バインディングは、データベースに格納されたデータをアプリケーション内で利用するために使用されてきました。Windows フォームのデータ バインディングでは、データベースのデータだけでなく、配列やコレクションなど、一定の条件を満たす他の構造のデータにもアクセスできます。

バインドできる構造

Windows フォームでは、シンプル オブジェクトに対するバインド (単純バインディング) から、ADO.NET データ テーブルなどの複雑なリストに対するバインド (複合バインディング) まで、さまざまな構造にバインドできます。単純バインディングでは、Windows フォームは、シンプル オブジェクトのパブリック プロパティに対するバインディングをサポートしています。Windows フォームのリストベース バインディングでは、一般に、オブジェクトが IList インターフェイスまたは IListSource インターフェイスをサポートしていることが必要です。加えて、BindingSource コンポーネントを通じてバインドする場合には、IEnumerable インターフェイスをサポートするオブジェクトに対してバインドできます。データ バインディングに関連するインターフェイスの詳細については、「データ連結に関連するインターフェイス」を参照してください。

次に示すのは、Windows フォームでバインドできる構造の一覧です。

  • BindingSource
    BindingSource は、Windows フォームのデータ ソースとしては最も一般的で、データ ソースと Windows フォーム コントロールの間のプロキシの役割を果たします。BindingSource の使用パターンとしては、コントロールを BindingSource にバインドし、BindingSource をデータ ソース (たとえば、ADO.NET データ テーブルやビジネス オブジェクト) にバインドするという形が一般的です。BindingSource は、データ バインディングのサポートを実現し、そのレベルを向上させるサービスを備えています。たとえば、Windows フォームのリストベースのコントロール (DataGridViewComboBox など) は、IEnumerable データ ソースへのバインディングを直接的にはサポートしていませんが、BindingSource を通じてバインドすることにより、それが可能になります。この場合、BindingSource はデータ ソースを IList に変換します。

  • シンプル オブジェクト
    Windows フォームは、コントロールのプロパティをオブジェクト インスタンスのパブリック プロパティにバインドする、Binding 型を使用したデータ バインディングをサポートします。また、Windows フォームは、BindingSource を使用したときには、リストベースのコントロール (ListControl など) からオブジェクト インスタンスへのバインディングをサポートします。

  • 配列またはコレクション
    リストをデータ ソースとして使用するためには、IList インターフェイスを実装する必要があります。その一例は、Array クラスのインスタンスである配列です。配列の詳細については、「方法 : オブジェクトの配列を作成する」を参照してください。コレクションの詳細については、「オブジェクト間の関係」を参照してください。

    一般に、データ バインディング用のオブジェクトのリストを作成するときには、BindingList<T> を使用する必要があります。BindingList<T>IBindingList インターフェイスのジェネリック バージョンです。IBindingList インターフェイスは、IList インターフェイスを拡張したもので、双方向のデータ バインディングに必要なプロパティ、メソッド、およびイベントが追加されています。

  • IEnumerable
    Windows フォーム コントロールは、BindingSource コンポーネントを通じてバインドする場合には、IEnumerable インターフェイスのみをサポートするデータ ソースにバインドできます。

  • ADO.NET データ オブジェクト
    ADO.NET には、バインディングに適したデータ構造がいくつか用意されています。各データ構造は、洗練の度合いと複雑さにおいてそれぞれ異なります。

    • DataColumn。1 つの表は複数の列で構成されます。その意味で、DataColumn は、DataTable の基本的なビルド ブロックです。各 DataColumn オブジェクトには DataType プロパティがあります。このプロパティは、列に保持されるデータの種類 (自動車を表すテーブルの場合は自動車の型など) を決定します。データ テーブル内の列に、コントロール (TextBox コントロールの Text プロパティなど) を単純バインドできます。

    • DataTableDataTable は、行と列で構成される、ADO.NET のテーブルの表現です。データ テーブルは、DataColumnDataRow という 2 つのコレクションを持ちます。前者は、当該のテーブルのデータの列を表し、そのテーブルに入力できるデータの種類は最終的にはこれにより決まります。後者は、当該のテーブルの行を表します。データ テーブルに含まれる情報に対して、コントロールを複合バインドできます (たとえば、DataGridView コントロールからデータ テーブルに対するバインドなど)。ただし、DataTable にバインドすると、実際にはテーブルの既定のビューにバインドされます。

    • DataViewDataView は、1 つのデータ テーブルのカスタマイズされたビューであり、フィルタ処理や並べ替えを行うことができます。データ ビューは、複合連結コントロールで使用するデータの "スナップショット" です。データ ビュー内のデータには単純バインドまたは複合バインドできますが、バインドしているのはクリーンな最新の状態のデータ ソースではなく、データの固定された "画像" であることに注意してください。

    • DataSetDataSet は、データベース内のデータのテーブル、リレーションシップ、および制約のコレクションです。データセット内のデータには単純バインドまたは複合バインドできますが、バインドしているのは DataSet の既定の DataViewManager (次の項目を参照) に対してであることに注意してください。

    • DataViewManagerDataViewManager は、DataSet 全体のカスタマイズされたビューです。DataView に似ていますが、リレーションシップが含まれています。DataViewSettings コレクションを使用すると、指定したテーブルに対して DataViewManager に設定されているビューに、既定のフィルタや並べ替えオプションを設定できます。

参照

概念

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

データ連結と Windows フォーム

その他の技術情報

Windows フォームでのデータ バインディング