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

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

订单详情表

订单编号 项目编号 数量
4085 12 1
4086 13 3

项目表

身份证件 名称
12 土豆
13

在此情境中,一个表 OrderDetailsTable 存储与显示和保存相关的具体信息。 但是,为了节省空间,它以相当神秘的方式这样做。 另一个表ItemTable仅包含与ID号和食品名称相对应的外观信息,并不涉及实际的食品订单。

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

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

创建查找表

  1. 向窗体中添加ComboBoxListBoxCheckedListBox控件。

  2. 连接到数据源。

  3. 在两个表之间建立数据关系。 请参阅 DataRelation 对象简介

  4. 设置以下属性。 可以在代码或设计器中设置它们。

    资产 设置
    DataSource 包含 ID 号与物品对照信息的表。 在前面的情景中,这是 ItemTable
    DisplayMember 控件中要显示的数据源表列。 在前面的方案中,这是 "Name" (若要在代码中设置,请使用引号)。
    ValueMember 数据源表中包含存储信息的列。 在前面的方案中,这是 "ID" (若要在代码中设置,请使用引号)。
  5. 在过程中,调用 Add 类的方法 ControlBindingsCollection ,将控件 SelectedValue 的属性绑定到记录表单输入的表。 还可以通过在“属性”窗口中访问控件DataBindings的属性,在设计器中而不是代码中执行此作。 在前面的方案中,这是 OrderDetailsTable,列是 "ItemID"

    ListBox1.DataBindings.Add("SelectedValue", OrderDetailsTable, "ItemID")
    
    listBox1.DataBindings.Add("SelectedValue", OrderDetailsTable, "ItemID");
    

另请参阅