如何:为 Windows 窗体 ComboBox 控件、ListBox 控件或 CheckedListBox 控件创建查找表

有时,以用户友好的格式在 Windows 窗体上显示数据、但是以对程序更有意义的格式存储数据是很有用的。 例如,食品订单窗体可以在列表框中按名称显示菜单项。 但记录订单的数据表包含表示食品的唯一 ID 号。 下表显示了如何存储和显示食品订单窗体数据的示例。

OrderDetailsTable

OrderID

ItemID

Quantity

4085

12

1

4086

13

3

ItemTable

ID

Name

12

Potato

13

Chicken

在此方案中,OrderDetailsTable 表存储要显示和保存的实际信息。 但是,为了节省空间,这是以一种很隐秘的方式实现的。 另一个表 ItemTable 仅包含与外观相关的信息(即哪个 ID 号与哪个食品名称等效),而没有与实际食品订单有关的任何信息。

ItemTable 通过三个属性连接到 ComboBox, ListBoxCheckedListBox 控件。 DataSource 属性包含该表的名称。 DisplayMember 属性包含该表中要在控件中显示的数据列(食品名称)。 ValueMember 属性包含该表中具有所存储信息(ID 号)的数据列。

OrderDetailsTable 通过其绑定集合连接到控件,并通过 DataBindings 属性进行访问。 当向该集合添加一个绑定对象时,会将一个控件属性连接到数据源 (OrderDetailsTable) 中的特定数据成员(ID 号列)。 当在该控件中进行选择时,将在该表中保存窗体输入。

创建查找表

  1. 向窗体添加一个 ComboBoxListBoxCheckedListBox 控件。

  2. 连接到数据源。

  3. 在两个表之间建立数据关系。 有关更多信息,请参见 介绍 DataRelation 对象介绍 DataRelation 对象介绍 DataRelation 对象介绍 DataRelation 对象介绍 DataRelation 对象.

  4. 设置下列属性。 这些属性可通过代码或在设计器中设置。

    Property

    设置

    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 窗体控件