如何:为 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, ListBox 或 CheckedListBox 控件。 DataSource 属性包含该表的名称。 DisplayMember 属性包含该表中要在控件中显示的数据列(食品名称)。 ValueMember 属性包含该表中具有所存储信息(ID 号)的数据列。
OrderDetailsTable 通过其绑定集合连接到控件,并通过 DataBindings 属性进行访问。 当向该集合添加一个绑定对象时,会将一个控件属性连接到数据源 (OrderDetailsTable) 中的特定数据成员(ID 号列)。 当在该控件中进行选择时,将在该表中保存窗体输入。
创建查找表
向窗体添加一个 ComboBox、ListBox 或 CheckedListBox 控件。
连接到数据源。
在两个表之间建立数据关系。 有关更多信息,请参见 介绍 DataRelation 对象 和 介绍 DataRelation 对象 和 介绍 DataRelation 对象 和 介绍 DataRelation 对象 和 介绍 DataRelation 对象.
设置下列属性。 这些属性可通过代码或在设计器中设置。
Property
设置
包含有关哪个 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");
请参见
参考
CheckedListBox 控件概述(Windows 窗体)