VB .NET - Vinculando um ComboBox/ListBox a um Enumeration

 Neste artigo vou mostrar como vincular uma Combobox a um Enumeration usando a linguagem VB .NET.


Para revisar os conceitos sobre Enumeration  e Combobox/ListBox veja os links nas referências no final do artigo.

Recordando, sabemos que uma enumeração é um conjunto relacionado de constantes.

Os membros da enumeração são definidos entre as declarações Enum e End Enum e são inicializados com valores constantes.

A enumeração é usada para agrupar um conjunto de constantes sob um nome comum, portanto, o valor pode ser referido por um valor de seqüência em vez do valor numérico.

No nosso exemplo vamos definir uma enumeração contendo os nomes dos meses chamada MesesDoAno:

Private Enum MesesDoAno
     Janeiro
     Fevereiro
     Março
     Abril
     Maio
     Junho
     Julho
     Agosto
     Setembro
     Outubro
     Novembro
     Dezembro
End Enum

Por padrão o primeiro enumerador possui o valor 0, e , cada enumerador posterior é uma unidade maior que o anterior, a menos que você especifique de forma explicita um valor para um enumerador específico. Assim Janeiro tem valor 0, Fevereiro valor 1, e, assim por diante.

Como podemos vincular uma enumeração a um Combobox/ListBox ?

Sim, podemos vincular os valores de uma enumeração a um combobox ou listbox para os valores na lista.

A classe Enum fornece um método estático chamado 'GetValues' que retorna uma matriz de todos os itens na enumeração.

Assim podemos fazer a vinculação usando o seguinte código :

Me.ComboBox1.DataSource =  System.Enum.GetValues ​​(GetType (NomeDaEnumeracao))

Me.ListBox1.DataSource      =  System.Enum.GetValues ​​(GetType (NomeDaEnumeracao))

O argumento para GetValues é um valor de tipo para enumeração que deesja recuperar.

O método GetType retorna um objeto do tipo com base no nome da enumeração.

Para saber o nome selecionado no controle você pode usar a propriedade SelectedText.

Para saber o valor constante associado ao nome você precisa usar a propriedade SelectedValue e fazer a conversão para o tipo da Enum usada.

 Dim nome as NomeDaEnumeracao = CType (ComboBox1.SelectedValue, NomeDaEnumeracao)
 Dim nome as NomeDaEnumeracao = CType (ListBox1.SelectedValue, NomeDaEnumeracao)

Vamos agora ao exemplo completo.

 Recursos Usados:

Criando o projeto no VS Community 2017

Abra no VS community 2017 e no menu File clique em New Project;

A seguir selecione o template Visual Basic -> Windows -> Windows Forms Application e informe o nome Vbn_ComboEnum e clique em OK;

Agora abra o formulário Form1.vb e inclua os seguintes controles no formulário:

Disponha os controles conforme o leiaute da figura abaixo:

Definindo o código do formulário

Namespaces usados no formulário:

Imports System.Enum

1- Código do botão de comando - Carregar dados da Enumeration

No evento Click deste botão inclua o código abaixo:

Imports System.Enum
Public Class Form1
    Private Enum MesesDoAno
        Janeiro
        Fevereiro
        Março
        Abril
        Maio
        Junho
        Julho
        Agosto
        Setembro
        Outubro
        Novembro
        Dezembro
    End Enum

    Private Sub btnCarregar_Click(sender As Object, e As EventArgs) Handles btnCarregar.Click
        Me.cboDados.DataSource = GetValues(GetType(MesesDoAno))
        Me.lbDados.DataSource = GetValues(GetType(MesesDoAno))
    End Sub
    Private Sub cboDados_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboDados.SelectedIndexChanged
        Dim mes As MesesDoAno = CType(cboDados.SelectedValue, MesesDoAno)
        MessageBox.Show("Mês selecionado : " + mes.ToString())
    End Sub
      Private Sub lbDados_SelectedIndexChanged(sender As Object, e As EventArgs) Handles lbDados.SelectedIndexChanged
        Dim mes As MesesDoAno = CType(lbDados.SelectedValue, MesesDoAno)
        MessageBox.Show("Mês selecionado : " + mes.ToString())
    End Sub

End Class

Executando o projeto teremos o resultado a seguir:

Pegue o projeto completo aqui:   Vbn_ComboEnum.zip

'E o testemunho é este: que Deus nos deu a vida eterna; e esta vida está em seu Filho.(Jesus Cristo)'
1 João 5:11

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti