方法 : Windows フォーム ComboBox、ListBox、または CheckedListBox コントロールのルックアップ テーブルを作成する
更新 : 2007 年 11 月
場合によっては、ユーザーにわかりやすい形で Windows フォーム上にデータを表示し、プログラムで処理しやすい形でそのデータを格納しておくと便利です。たとえば、食品の注文フォームで、リスト ボックスにメニュー項目が名前別に表示されているとします。このとき、注文を記録するデータ テーブルには、食品を表す一意の ID 番号が格納されています。食品の注文フォームのデータを格納して表示する方法の例を次の表に示します。
OrderDetailsTable
OrderID |
ItemID |
数量 |
---|---|---|
4085 |
12 |
1 |
4086 |
13 |
3 |
ItemTable
ID |
食品名 |
---|---|
12 |
ポテト |
13 |
チキン |
このシナリオでは、一方のテーブル (OrderDetailsTable) に、表示と保存に関する実際の情報が格納されます。このようなわかりにくい方法をとっているのは、領域を節約することが目的です。もう一方のテーブル (ItemTable) には、ID 番号に対応する食品名という表示上の情報だけが格納されます。実際の食品の注文についての情報は一切格納されません。
ItemTable は、3 つのプロパティを使用して、ComboBox、ListBox、または CheckedListBox コントロールに接続されます。 DataSource プロパティには、このテーブルの名前が格納されます。 DisplayMember プロパティには、コントロールに表示するテーブルのデータ列 (食品名) が格納されます。 ValueMember プロパティには、格納された情報に関連付けられたテーブルのデータ列 (ID 番号) が格納されます。
OrderDetailsTable は、DataBindings プロパティをとおしてアクセスできるデータ バインディングのコレクションを使用して、コントロールに接続されます。バインディング オブジェクトをコレクションに追加するときは、コントロールのプロパティをデータ ソース (OrderDetailsTable) の特定のデータ メンバ (ID 番号の列) に接続します。コントロール内で選択操作が行われると、このテーブルにフォーム入力が保存されます。
ルックアップ テーブルを作成するには
ComboBox、ListBox、または CheckedListBox コントロールをフォームに追加します。
データ ソースに接続します。
2 つのテーブル間でデータ リレーションシップを確立します。詳細についてはDataRelation オブジェクトの概要 およびDataRelation オブジェクトの概要 およびDataRelation オブジェクトの概要 およびDataRelation オブジェクトの概要 およびDataRelation オブジェクトの概要.
次のプロパティを設定します。これらのプロパティは、コードで設定することも、デザイナで設定することもできます。
プロパティ
設定
どの ID 番号がどの項目に対応するかについての情報を格納するテーブルです。上記のシナリオでは、 ItemTable になります。
コントロールに表示するデータ ソース テーブルの列です。上記のシナリオでは、 "Name" になります。コードで設定する場合は、二重引用符を使用します。
格納された情報を保持するデータ ソース テーブルの列です。上記のシナリオでは、 "ID" になります。コードで設定する場合は、二重引用符を使用します。
プロシージャで、ControlBindingsCollection クラスの Add メソッドを呼び出して、コントロールの SelectedValue プロパティを、フォーム入力を記録するテーブルにバインドします。これはコードの代わりにデザイナでも実行できます。その場合は、[プロパティ] ウィンドウでコントロールの DataBindings プロパティにアクセスします。上記のシナリオでは、 OrderDetailsTable であり、列は "ItemID" です。
ListBox1.DataBindings.Add("SelectedValue", OrderDetailsTable, "ItemID")
listBox1.DataBindings.Add("SelectedValue", OrderDetailsTable, "ItemID");
listBox1.get_DataBindings().Add("SelectedValue", OrderDetailsTable, "ItemID");
参照
概念
参照
ListBox コントロールの概要 (Windows フォーム)
ComboBox コントロールの概要 (Windows フォーム)
CheckedListBox コントロールの概要 (Windows フォーム)