.NET Framework アプリケーションのデータに Windows フォーム コントロールをバインドする

Note

データセットと関連クラスは、アプリケーションがデータベースから切断されている間にアプリケーションがメモリ内のデータを操作できるようにする、2000 年代初期からのレガシ .NET Framework テクノロジです。 これらが特に役立つのは、ユーザーがデータを変更し、変更をデータベースに戻して保持できるようにするアプリケーションです。 データセットは非常に優れたテクノロジであることが証明されていますが、新しい .NET アプリケーションでは Entity Framework Core を使用することをお勧めしています。 Entity Framework には、オブジェクト モデルとして表形式データを操作する、より自然な方法が用意されており、よりシンプルなプログラミング インターフェイスが備わっています。

データを Windows フォームにバインドすることで、アプリケーションのユーザーに対してデータを表示できます。 これらのデータバインド コントロールを作成するには、Visual Studio で [データ ソース] ウィンドウから Windows フォーム デザイナーに項目をドラッグします。

Data Source drag operation

ヒント

[データ ソース] ウィンドウが表示されていない場合は、 [表示]>[その他のウィンドウ]>[データ ソース] の順に選択するか、Shift+Alt+D キーを押して開くことができます。 [データ ソース] ウィンドウを表示するには、Visual Studio でプロジェクトを開いておく必要があります。

項目をドラッグする前に、バインド先のコントロールの種類を設定できます。 テーブル自体を選択するか、個々の列を選択するかによって、表示される値が異なります。 また、カスタム値を設定することもできます。 テーブルの場合、 [詳細] を使用すると、各列が個別のコントロールにバインドされます。

Bind data source to DataGridView

BindingSource および BindingNavigator コントロール

BindingSource コンポーネントは 2 つの目的で利用できます。 まず、コントロールをデータにバインドするときに、抽象化レイヤーの役割を果たします。 フォーム上のコントロールは、データ ソースに直接バインドされるのではなく、BindingSource コンポーネントにバインドされます。 また、オブジェクトのコレクションを管理できます。 BindingSource に型を追加すると、その型の一覧が作成されます。

BindingSource コンポーネントの詳細については、次のトピックを参照してください。

BindingNavigator コントロールは、Windows アプリケーションによって表示されるデータ間を移動するためのユーザー インターフェイスを提供します。

DataGridView コントロールのデータへのバインド

DataGridView コントロールの場合、テーブル全体がその 1 つのコントロールにバインドされます。 DataGridView をフォームにドラッグすると、レコード間を移動するためのツール ストリップ (BindingNavigator) も表示されます。 DataSetTableAdapterBindingSourceBindingNavigator がコンポーネント トレイに表示されます。 次の図では、Customers テーブルが Orders テーブルに関連付けられているため、TableAdapterManager も追加されています。 これらの変数はすべて、自動生成コードでフォーム クラスのプライベート メンバーとして宣言されています。 DataGridView に入力するための自動生成コードは、Form_Load イベント ハンドラーにあります。 データを保存してデータベースを更新するためのコードは、BindingNavigatorSave イベント ハンドラーにあります。 必要に応じて、このコードを移動または変更できます。

GridView with BindingNavigator

DataGridViewBindingNavigator の動作は、それぞれの右上隅にあるスマート タグをクリックしてカスタマイズできます。

DataGridView and Binding Navigator smart tags

自分のアプリケーションに必要なコントロールが [データ ソース] ウィンドウ内から使用できない場合は、コントロールを追加できます。 詳細については、「[データ ソース] ウィンドウにカスタム コントロールを追加する」を参照してください。

[データ ソース] ウィンドウからフォーム上の既存のコントロールに項目をドラッグして、コントロールをデータにバインドすることもできます。 データに既にバインドされているコントロールのデータ バインディングは、最後にドラッグされた項目に再設定されます。 有効なドロップ ターゲットであるためには、 [データ ソース] ウィンドウからドラッグされた項目の基になるデータ型をコントロールが表示できる必要があります。 たとえば、データ型が DateTime である項目を CheckBox にドラッグするのは無効です。CheckBox は日付を表示できないためです。

個々のコントロールのデータへのバインド

データ ソースを [詳細] にバインドすると、データセットの各列が個別のコントロールにバインドされます。

Bind data source to details

重要

前の図では、Orders テーブルからではなく、Customers テーブルの Orders プロパティからドラッグしていることに注意してください。 Customer.Orders プロパティにバインドすることで、DataGridView でのナビゲーション コマンドが詳細コントロールにすぐに反映されます。 Orders テーブルからドラッグした場合でも、コントロールはデータセットにバインドされますが、DataGridView と同期されません。

次の図は、Customers テーブルの Orders プロパティが [データ ソース] ウィンドウの [詳細] にバインドされた後にフォームに追加される既定のデータバインド コントロールを示しています。

Orders table bound to details

各コントロールにスマート タグがあることにも注意してください。 このタグを使用すると、そのコントロールにのみ適用されるカスタマイズが可能になります。