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