次の方法で共有


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

従来、データ バインディングは、データベースに格納されたデータをアプリケーション内で利用するために使用されてきました。 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 クラスのインスタンスである配列です。 配列の詳細については、「方法: オブジェクトの配列を作成する (Visual Basic)」を参照してください。

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

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

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

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

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

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

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

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

参照

概念

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

データ連結と Windows フォーム

その他の技術情報

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