Как создать таблицу подстановки для элементов управления ComboBox, ListBox или CheckedListBox в Windows Forms
Иногда полезно отображать данные в понятном формате в Windows Form, но хранить данные в более понятном для вашей программы формате. Например, форма заказа блюд может отображать элементы меню по названиям в списке. Однако таблица данных, записывающая заказ, будет содержать уникальные идентификаторы, представляющие еду. В следующих таблицах показан пример хранения и отображения данных формы заказа для продуктов питания.
ТаблицаДеталейЗаказа
Идентификатор заказа | ИдентификаторТовара | Количество |
---|---|---|
4085 | 12 | 1 |
4086 | 13 | 3 |
ТаблицаЭлементов
ИДЕНТИФИКАТОР | Имя |
---|---|
12 | Картофель |
13 | Курица |
В этом сценарии одна таблица OrderDetailsTableсодержит фактические данные, которые вы хотите отображать и сохранять. Но чтобы сэкономить место, делает это довольно загадочным образом. Другая таблица, ItemTable, содержит только информацию о том, какому идентификатору соответствует название блюда, и ничего о фактических заказах еды.
ItemTable подключен к элементу управления ComboBox, ListBoxили CheckedListBox через три свойства. Свойство DataSource
содержит имя этой таблицы. Свойство DisplayMember
содержит столбец данных из этой таблицы, который вы хотите отобразить в элементе управления (например, название блюда). Свойство ValueMember
содержит столбец данных этой таблицы с хранимыми данными (идентификатором).
OrderDetailsTable подключен к элементу управления через коллекцию привязок, доступную через свойство DataBindings. При добавлении объекта привязки в коллекцию необходимо подключить свойство элемента управления к определенному элементу данных (столбцу идентификаторов) в источнике данных (OrderDetailsTable). При выборе в элементе управления эта таблица сохраняет входные данные формы.
Чтобы создать таблицу подстановки
Добавьте элемент управления ComboBox, ListBoxили CheckedListBox в форму.
Подключитесь к источнику данных.
Установите связь данных между двумя таблицами. См. общие сведения о объектах DataRelation.
Задайте следующие свойства. Их можно задать в коде или в конструкторе.
Свойство Настройки DataSource Таблица, содержащая сведения о том, какой номер идентификатора эквивалентен этому элементу. В предыдущем сценарии это 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