場合によっては、Windows フォームにわかりやすい形式でデータを表示し、プログラムにとってより意味のある形式でデータを格納すると便利な場合があります。 たとえば、食品の注文フォームでは、メニュー項目がリスト ボックスに名前で表示される場合があります。 ただし、注文を記録するデータ テーブルには、食品を表す一意の ID 番号が含まれます。 次の表は、食品の注文フォーム データを格納および表示する方法の例を示しています。
注文詳細テーブル
| 注文ID | アイテムID | 数量 |
|---|---|---|
| 4085 | 12 | 1 |
| 4086 | 13 | 3 |
アイテムテーブル
| 身分証明書 | 名前 |
|---|---|
| 12 | ジャガイモ |
| 13 | チキン |
このシナリオでは、1 つのテーブル OrderDetailsTable に、表示と保存に関する実際の情報が格納されます。 しかし、スペースを節約するために、それはかなり不可解な方法でそうします。 もう 1 つのテーブル ItemTable には、どの ID 番号がどの食品名に相当するかに関する外観関連の情報のみが含まれ、実際の食品注文に関する情報はありません。
ItemTable は、3 つのプロパティを使用して、ComboBox、ListBox、またはCheckedListBox コントロールに接続されます。
DataSource プロパティには、このテーブルの名前が含まれています。
DisplayMember プロパティには、コントロールに表示するテーブルのデータ列 (食品名) が含まれます。
ValueMember プロパティには、格納されている情報 (ID 番号) を含むテーブルのデータ列が含まれます。
OrderDetailsTable は、DataBindings プロパティを介してアクセスされるバインディング コレクションによってコントロールに接続されます。 バインディング オブジェクトをコレクションに追加すると、コントロール プロパティをデータ ソース ( OrderDetailsTable) 内の特定のデータ メンバー (ID 番号の列) に接続します。 コントロールで選択が行われると、このテーブルはフォーム入力が保存される場所です。
参照テーブルを作成するには
フォームに ComboBox、 ListBox、または CheckedListBox コントロールを追加します。
データ ソースに接続します。
2 つのテーブル間にデータ関係を確立します。 DataRelation オブジェクトの概要を参照してください。
次のプロパティを設定します。 これらは、コードまたはデザイナーで設定できます。
プロパティ 設定 DataSource どの ID 番号がどの項目に相当するかに関する情報を含むテーブル。 前のシナリオでは、これは ItemTable。DisplayMember コントロールに表示するデータ ソース テーブルの列。 前のシナリオでは、これは "Name"です (コードで設定するには、引用符を使用します)。ValueMember 格納されている情報を含むデータ ソース テーブルの列。 前のシナリオでは、これは "ID"です (コードで設定するには、引用符を使用します)。プロシージャで、Add クラスのControlBindingsCollection メソッドを呼び出して、フォーム入力を記録するテーブルにコントロールのSelectedValue プロパティをバインドします。 また、[DataBindings] ウィンドウでコントロールの プロパティにアクセスすることで、コードではなくデザイナーでこれを行うこともできます。 前のシナリオでは、これは
OrderDetailsTableで、列は"ItemID"。ListBox1.DataBindings.Add("SelectedValue", OrderDetailsTable, "ItemID")listBox1.DataBindings.Add("SelectedValue", OrderDetailsTable, "ItemID");
こちらも参照ください
.NET Desktop feedback