次の方法で共有


方法 : Windows フォーム ComboBox、ListBox、または CheckedListBox コントロールのルックアップ テーブルを作成する

場合によっては、ユーザーにわかりやすい形で Windows フォーム上にデータを表示し、プログラムで処理しやすい形でそのデータを格納しておくと便利です。 たとえば、食品の注文フォームで、リスト ボックスにメニュー項目が名前別に表示されているとします。 このとき、注文を記録するデータ テーブルには、食品を表す一意の ID 番号が格納されています。 食品の注文フォームのデータを格納して表示する方法の例を次の表に示します。

OrderDetailsTable

OrderID

ItemID

数量

4085

12

1

4086

13

3

ItemTable

ID

名前

12

ポテト

13

チキン

このシナリオでは、一方のテーブル (OrderDetailsTable) に、表示と保存に関する実際の情報が格納されます。 このようなわかりにくい方法をとっているのは、領域を節約することが目的です。 もう一方のテーブル (ItemTable) には、ID 番号に対応する食品名という表示上の情報だけが格納されます。実際の食品の注文についての情報は一切格納されません。

ItemTable は、3 つのプロパティを使用して、ComboBoxListBox、または CheckedListBox コントロールに接続されます。 DataSource プロパティには、このテーブルの名前が格納されます。 DisplayMember プロパティには、コントロールに表示するテーブルのデータ列 (食品名) が格納されます。 ValueMember プロパティには、格納された情報に関連付けられたテーブルのデータ列 (ID 番号) が格納されます。

OrderDetailsTable は、DataBindings プロパティをとおしてアクセスできるデータ バインディングのコレクションを使用して、コントロールに接続されます。 バインディング オブジェクトをコレクションに追加するときは、コントロールのプロパティをデータ ソース (OrderDetailsTable) の特定のデータ メンバー (ID 番号の列) に接続します。 コントロール内で選択操作が行われると、このテーブルにフォーム入力が保存されます。

ルックアップ テーブルを作成するには

  1. ComboBoxListBox、または CheckedListBox コントロールをフォームに追加します。

  2. データ ソースに接続します。

  3. 2 つのテーブル間でデータ リレーションシップを確立します。 詳細については DataRelation オブジェクトの概要 および DataRelation オブジェクトの概要 および DataRelation オブジェクトの概要 および DataRelation オブジェクトの概要 および DataRelation オブジェクトの概要.

  4. 次のプロパティを設定します。 これらのプロパティは、コードで設定することも、デザイナーで設定することもできます。

    プロパティ

    設定

    DataSource

    どの ID 番号がどの項目に対応するかについての情報を格納するテーブルです。 上記のシナリオでは、 ItemTable になります。

    DisplayMember

    コントロールに表示するデータ ソース テーブルの列です。 上記のシナリオでは、 "Name" になります。コードで設定する場合は、二重引用符を使用します。

    ValueMember

    格納された情報を保持するデータ ソース テーブルの列です。 上記のシナリオでは、 "ID" になります。コードで設定する場合は、二重引用符を使用します。

  5. プロシージャで、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 フォーム)

概念

データ連結と Windows フォーム

その他の技術情報

オプションのリストを表示するための Windows フォーム コントロール