Adicionado objetos a ComboBox
Veja nesse artigo um exemplo de como utilizar seus objetos como itens em uma ComboBox.
por Daniel Fonseca Castro
A ComboBox é uns dos componentes mais utilizando no nosso dia a dia seja em uma aplicação Windows Form ou Web Form(DropDownList) , participando dos fóruns da MSDN percebi que muitas threads são criadas com perguntas de como concatenar duas colunas e mostrar ,como descobrir qual registro foi selecionado e fazer uma busca no banco de dados etc...
Muitas dessas dúvidas podem ser resolvidas utilizando uma pratica simples , consiste em criar um objeto e usar esse objeto com item da ComboBox , fazendo isso você ganha em flexibilidade e pode fazer validações ,concatenações,operações ,pode guarda N dados , enfim você tem o controle total do que será exibido e guardado na sua ComboBox utilizando essa prática .
Criando o seu objeto com as propriedades e ações necessárias para atender a sua necessidade, você também ganha desempenho trabalhando desconectado do banco de dados e sem a necessidade de criar DataSet.
O ponto chave dessa prática e sobrescrever o método ToString do objeto esse método e chamado na hora em que o a propriedade Text da ComboBox for preenchida como o método ToString retorna uma string qualquer valor que você retorna será exibido na ComboBox , assim você pode concatenar N valores e fazer verificações para decidir o que mostrar .
· Visual Studio 2008 Express Edition
· Banco de dados de exemplo Northwind
Primeiro passo : Criar um formulário como base na imagem abaixo :
Segundo passo : Criar o objeto que será utilizando como item para o preenchimento da ComboBox.
public class ExemploObjeto
/// Sobrescrever método ToString e retorno o valor que será exibido na combos
return String.Format("Companhia : {0} - Contato : {0}", this.CompanyName, this.ContactName);
Terceiro passo : Preenche a ComboBox com o objeto criado no segundo passo.
private void PreencheComboBox()
ExemploObjeto exemploObjeto = null;
using (SqlConnection connection = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True"))
command.CommandText = "SELECT CustomerID,CompanyName,ContactName ,ContactTitle ,Address FROM Customers";
//Preenche ComboBox
//Cria Objeto que será Source para Combo
exemploObjeto = new ExemploObjeto();
exemploObjeto.CustomerID = reader.GetString(reader.GetOrdinal("CustomerID"));
exemploObjeto.CompanyName = reader.GetString(reader.GetOrdinal("CompanyName"));
exemploObjeto.ContactName = reader.GetString(reader.GetOrdinal("ContactName"));
exemploObjeto.ContactTitle = reader.GetString(reader.GetOrdinal("ContactTitle"));
exemploObjeto.Address = reader.GetString(reader.GetOrdinal("Address"));
//Adiciona objeto a Combo
comboBoxCustomers.Items.Add(exemploObjeto);
Quarto passo : Recuperar o item adicionado, existe varias maneiras de fazer isso, mais na minha opinião a melhor forma de se fazer isso é no evento SelectedIndexChanged utilizar a propriedade SelectedItem que retorna o objeto selecionado.
private void comboBoxCustomers_SelectedIndexChanged(object sender, EventArgs e)
//Carrega objeto selecionado
ExemploObjeto exemploObjeto = (ExemploObjeto)comboBoxCustomers.SelectedItem;
//Mostra os valores das propriedades do item selecionado
textBoxId.Text = exemploObjeto.CustomerID;
textBoxCompanhia.Text = exemploObjeto.CompanyName;
textBoxContato.Text = exemploObjeto.ContactName;
textBoxCargoContato.Text = exemploObjeto.ContactTitle;
textBoxEndereco.Text = exemploObjeto.Address;
Esse é um exemplo do que pode ser feito com a utilização dessa pratica , dessa forma você ganha muita flexibilidade e pode melhorar a performance dos seus aplicativos trabalhando de forma desconectada do banco .
Daniel Fonseca Castro - Trabalha com desenvolvimento desde 2003, experiência em desenvolvimento de softwares para equipamentos móveis, web e desktop, atualmente trabalha como desenvolvedor na UNIP em São Paulo.