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, mas armazenar os dados em um formato mais significativo para o programa. Por exemplo, um formulário de pedido para alimentos pode exibir os itens de menu pelo nome em uma caixa de listagem. No entanto, a tabela de dados que registra o pedido conteria os números de ID exclusivos que representam o alimento. As tabelas a seguir mostram um exemplo de como armazenar e exibir dados de formulário de pedido para alimentos.

TabelaDeDetalhesDoPedido

ID do Pedido ItemID Quantidade
4085 12 1
4.086 13 3

TabelaDeItens

ID Nome
12 Batata
13 Frango

Nesse cenário, uma tabela, OrderDetailsTable, armazena as informações reais que você está preocupado em exibir e salvar. Mas para economizar espaço, ele faz isso de uma forma bastante enigmática. A outra tabela, ItemTable, contém apenas informações relacionadas à aparência sobre qual número de ID é equivalente ao nome do alimento e nada sobre os pedidos reais de alimentos.

O ItemTable está conectado ao controle ComboBox, ListBox ou CheckedListBox por meio de três propriedades. A propriedade DataSource contém o nome desta tabela. A propriedade DisplayMember contém a coluna de dados dessa 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 da ID).

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

Para criar uma tabela de pesquisa

  1. Adicione um controle ComboBox, 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 propriedades a seguir. Eles podem ser definidos no código ou no designer.

    Propriedade Configurações
    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 que você deseja exibir 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 método Add da classe ControlBindingsCollection para associar a propriedade SelectedValue do controle à tabela que registra a entrada do formulário. Você também pode fazer isso no Designer, ao invés de no código, acessando a propriedade DataBindings do controle na janela de Propriedades do . No cenário anterior, isso é OrderDetailsTable e a coluna é "ItemID".

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

Consulte também