Array
(
)

DICA: Vincular descrição de um item a um código na ComboBox

Scifie
   - 18 ago 2005

Olá pessoal, este tópico é meio que um mini tutorial de como vincular a descrição de um item da combobox a seu código.

A forma de fazer isso é bem simples, primeiro é necessário criar uma classe que representará o item da combo. Esta classe, obrigatoriamente deverá conter duas propriedades (readonly, de preferência), uma que retornará o texto (descrição do item) e outra que retornará o código do item.

Abaixo está a classe que eu criei como exemplo:
#Código
Public Class ComboData
Private strNome As String
Private nCodigo As Integer

Public ReadOnly Property Nome() As String
Get
Return Me.strNome
End Get
End Property

Public ReadOnly Property Codigo() As Integer
Get
Return Me.nCodigo
End Get
End Property

Public Sub New(ByVal nCodigo As Integer, ByVal strNome As String)
Me.strNome = strNome
Me.nCodigo = nCodigo
End Sub
End Class


Cada objeto desta classe representará um item na combo-box, sendo assim, para cada elemento que você quiser inserir na combo você deverá criar uma instância dessa classe.

Agora que já temos a classe que representa o item, devemos inserir as instâncias dos obj da classe [ComboData] em um a ArrayList. Será o ArrayList que vinculará os itens (as instâncias da classe [ComboData]) na combo-box.

Para isso basta fazer como o exemplo:
#Código
Dim lstData As New ArrayList

For i As Integer = 0 To 1000
lstData.Add(New ComboData(i, "VB-" + i.ToString()))
Next


Bem, com o obj. ArrayList carregado, agora só nos basta configurar a combo-box. Modo mais simples eu não conheço :).
Basta seguir o exemplo abaixo:
#Código
Me.ComboBox1.Items.Clear()
Me.ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList

Me.ComboBox1.BeginUpdate()
Me.ComboBox1.DataSource = lstData
Me.ComboBox1.DisplayMember = "Nome"
Me.ComboBox1.ValueMember = "Codigo"
Me.ComboBox1.EndUpdate()


Como pode ser visto no exemplo acima, a propriedade DataSource da combo deverá receber o obj. ArrayList; a propriedade DisplayMember deverá receber o nome da propriedade da classe que criamos que retornará a descrição que será mostrada na combo; a propriedade ValueMember deverá receber o nome da propriedade da classe que criamos que retornará o código vinculado a descrição.

E é isso, bem simples e prático. Se alguém desejar o código de exemplo que eu criei, é só me mandar uma MP informando o e-mail que eu envio.

Até mais pessoal.

Scifie