Поделиться через


Как создать таблицу подстановки для элементов управления 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). При выборе в элементе управления эта таблица сохраняет входные данные формы.

Чтобы создать таблицу подстановки

  1. Добавьте элемент управления ComboBox, ListBoxили CheckedListBox в форму.

  2. Подключитесь к источнику данных.

  3. Установите связь данных между двумя таблицами. См. общие сведения о объектах DataRelation.

  4. Задайте следующие свойства. Их можно задать в коде или в конструкторе.

    Свойство Настройки
    DataSource Таблица, содержащая сведения о том, какой номер идентификатора эквивалентен этому элементу. В предыдущем сценарии это ItemTable.
    DisplayMember Столбец таблицы источника данных, которую необходимо отобразить в элементе управления. В предыдущем сценарии это "Name" (чтобы задать в коде, используйте кавычки).
    ValueMember Столбец таблицы источника данных, содержащей хранимую информацию. В предыдущем сценарии это "ID" (чтобы задать в коде, используйте кавычки).
  5. В процедуре вызовите метод Add класса ControlBindingsCollection, чтобы привязать свойство элемента управления SelectedValue к таблице, записывающей входные данные формы. Это также можно сделать в конструкторе, а не в коде, путем доступа к свойству DataBindings элемента управления в окне Свойства. В предыдущем сценарии это OrderDetailsTable, а столбец — "ItemID".

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

См. также