Como criar uma tabela de pesquisa para um controle ComboBox, ListBox ou CheckedListBox dos Windows Forms

Às vezes, é útil exibir dados em um formato amigável em um formulário do Windows Forms, porém, armazene os dados em um formato que seja mais significativo para o programa. Por exemplo, um formulário de pedido de alimentos pode exibir os itens de menu por nome em uma caixa de listagem. No entanto, a tabela de dados que registra a ordem conteria os números de identificação exclusivos que representam os alimentos. As tabelas a seguir mostram um exemplo de como armazenar e exibir dados de formulários de pedidos de alimentos.

OrderDetailsTable

OrderID ItemID Quantidade
4085 12 1
4086 13 3

ItemTable

ID Nome
12 Batata
13 Frango

Nesse cenário, uma tabela, OrderDetailsTable, armazena as informações reais que serão exibidas e salvas. Porém, para economizar espaço, isso é feito de maneira bastante enigmática. A outra tabela, ItemTable, contém apenas informações relacionadas à aparência sobre qual número de ID é equivalente a qual nome de alimento, e nada sobre os pedidos de alimentos.

O ItemTable é conectado ao controle , ListBoxou CheckedListBox por meio de ComboBoxtrês propriedades. A propriedade DataSource contém o nome dessa tabela. A propriedade DisplayMember contém a coluna de dados da tabela que você deseja exibir no controle (o nome do alimento). A propriedade ValueMember contém a coluna de dados dessa tabela com as informações armazenadas (o número de ID).

O OrderDetailsTable é conectado ao controle por sua coleção de associações, acessada por meio da DataBindings propriedade. Ao adicionar um objeto de associação à coleção, uma propriedade de controle será conectada a um membro de dados específico (a coluna de números de ID) em uma fonte de dados (OrderDetailsTable). Quando uma seleção é feita no controle, a entrada de formulário será salva nessa tabela.

Criar uma tabela de pesquisa

  1. Adicione um ComboBoxcontrole , ListBoxou CheckedListBox ao formulário.

  2. Conecte-se à fonte de dados.

  3. Estabeleça uma relação de dados entre as duas tabelas. Consulte Introdução a Objetos DataRelation.

  4. Defina as seguintes propriedades. Elas podem ser definidos no código ou no designer.

    Propriedade Configuração
    DataSource A tabela que contém informações sobre qual número de ID é equivalente a qual item. No cenário anterior, isso é ItemTable.
    DisplayMember A coluna da tabela de fonte de dados a ser exibida no controle. No cenário anterior, isso é "Name" (para definir no código, use aspas).
    ValueMember A coluna da tabela de fonte de dados que contém as informações armazenadas. No cenário anterior, isso é "ID" (para definir no código, use aspas).
  5. Em um procedimento, chame o AddControlBindingsCollection método da classe para vincular a propriedade do SelectedValue controle à tabela que registra a entrada do formulário. Você também pode fazer isso no Designer em vez de no código, acessando a propriedade do DataBindings controle na janela Propriedades . No cenário anterior, isso é OrderDetailsTable e a coluna é "ItemID".

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

Confira também