次の方法で共有


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

これまで、データ バインディングは、データベースに格納されているデータを利用するために、アプリケーション内で使用されてきました。 Windows フォームのデータ バインディングを使用すると、データベースのデータだけでなく、配列やコレクションなど、他の構造体のデータにもアクセスできます (ただし、特定の最小要件が満たされている必要があります)。

バインド先の構造体

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

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

BindingSource
BindingSource は、最も一般的な Windows フォーム データ ソースです。これは、データ ソースと Windows フォーム コントロールとの間のプロキシとして機能します。 BindingSource の一般的な使用パターンは、コントロールを BindingSource にバインドし、BindingSource をデータ ソース (たとえば、ADO.NET データ テーブルやビジネス オブジェクト) にバインドするという使い方です。 BindingSource には、データ バインディングのサポートを有効にし、そのレベルを改善するためのサービスが用意されています。 たとえば、DataGridViewComboBox などの Windows フォーム リストベース コントロールでは、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。 テーブルは複数の列で構成されるため、DataColumnDataTable の重要な構成要素です。 各 DataColumn には、列に保持されるデータの種類を決定する、DataType プロパティがあります (たとえば、自動車の情報が格納されたテーブル内の自動車メーカー名など)。 開発者は、コントロール (TextBox コントロールの Text プロパティなど) をデータ テーブル内の列に単純バインドすることができます。

  • DataTable. DataTable は、ADO.NET でのテーブル (行と列を含む) の表現です。 データ テーブルには、2 つのコレクションが含まれます。1 つは DataColumn です。これは、特定のテーブル内のデータ列を表します (最終的に、そのテーブルに入力できるデータの種類はこれによって決まります)。もう 1 つは DataRow です。これは、特定のテーブル内のデータ行を表します。 開発者は、データ テーブルに格納されている情報にコントロールを複雑バインドすることができます (データ テーブルに対する DataGridView コントロールのバインディングなど)。 ただし、DataTable にバインドした場合、実際にはテーブルの既定のビューにバインドしたことになります。

  • DataView. DataView は、フィルター処理や並べ替えが可能な、単一のデータ テーブルのカスタム ビューです。 データ ビューは、複合バインド コントロールによって使用されるデータ "スナップショット" です。 開発者は、データ ビュー内のデータに単純バインドや複雑バインドを行うことができます。ただし、随時更新されるクリーンなデータ ソースではなく、言わばデータの "静止画" にバインドするようなものであるという点に注意してください。

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

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

関連項目