Partilhar via


Como: Criar uma tabela de pesquisa para um controle ComboBox, ListBox ou CheckedListBox do Windows Forms

Às vezes, é útil exibir dados em um formato amigável em um Windows Form, mas armazenar os dados em um formato que seja mais significativo para o seu programa. Por exemplo, um formulário de pedido de comida pode exibir os itens de menu por nome em uma caixa de listagem. No entanto, a tabela de dados que regista a encomenda conteria os números de identificação únicos que representam o alimento. As tabelas a seguir mostram um exemplo de como armazenar e exibir dados de formulário de pedido para alimentos.

Tabela de Detalhes do Pedido

ID do Pedido ID do item Quantidade
4085 12 1
4086 13 3

Tabela de Itens

Identificação 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 poupar espaço, fá-lo de uma forma bastante enigmática. A outra tabela, ItemTable, contém apenas informações relacionadas à aparência sobre qual número de identificação é equivalente a qual nome de alimento, e nada sobre os pedidos de comida reais.

O ItemTable está conectado ao controle ComboBox, ListBoxou 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 de ID).

O OrderDetailsTable está ligado ao controlo pela sua coleção de associações, acedida por meio da propriedade DataBindings. Ao adicionar um objeto de vinculação à coleção, você conecta uma propriedade de controle a um membro de dados específico (a coluna de números de ID) em uma fonte de dados (o 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 à sua fonte de dados.

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

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

    Propriedade Cenário
    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 da 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 da 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 vincular a propriedade SelectedValue do 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 controle na janela Propriedades . No cenário anterior, isso é OrderDetailsTablee a coluna é "ItemID".

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

Ver também