VB .NET - Exibindo uma lista de países e obtendo informações sobre a moeda


 Neste artigo vou mostrar como usar os recursos do namespace System.Globalization da plataforma .NET para exibir uma lista de países e obter informações sobre moeda.

O namespace System.Globalization contém classes que definem informações relacionadas à cultura, incluindo idioma, país/região, os calendários em uso, os padrões de formatação para datas, moeda e números e a classificação do pedido para seqüências de caracteres.

Essas classes são úteis para escrever aplicativos globalizados. Classes como StringInfo e TextInfo fornecem funcionalidades de globalização avançadas, incluindo suporte substituto e processamento de elemento de texto.

Dentre as classes e enumerações do namespace System.Globalization destacamos a seguir as que iremos usar neste artigo:

Classe/Enumeração Descrição
CultureInfo  Fornece informações sobre uma cultura específica (chamada uma localidade para o desenvolvimento de código não gerenciado). As informações incluem os nomes para a cultura, o sistema de gravação, o calendário usado, e a formatação de datas e cadeias de caracteres do tipo.
RegionInfo Contém informações sobre o país/região.
CultureTypes Define os tipos de listas de cultura que podem ser recuperadas usando o método CultureInfo.GetCultures.
Calendar Representa o tempo em divisões como, por exemplo, semanas, meses e anos.

Neste artigo eu vou mostrar como podemos usar os recursos do namespace System.Globalization  para preencher um Combobox em uma aplicação Windows forms e exibir informações de moeda.

Recursos usados :

Criando o projeto no VS Community

Abra o VS Community 2015  e clique em New Project;

A seguir selecione Visual Basic -> Windows -> Windows Forms Application;

Informe o nome Paises_Moeda e clique no botão OK;

A partir da ToolBox inclua os seguintes controles no formulário form1.vb:

Disponha os controles conforme o leiaute da figura abaixo:

A seguir vamos definir as variáveis abaixo que serão visíveis em todo o  formulário:

Dim cbox As New ComboBox With {.Sorted = True}
Dim NomePais, NomeMoeda, SimboloMoeda, CulturaAtualDoComputador As String
Dim
PaisIndice As Integer
Dim
i As
Integer

Note que temos dois controles combobox. O usado no formulário para exibir os paises - cboPaises, e o combobox cbox que estamos usando para obter a informação da moeda.

Agora no evento Load do formulário vamos carregar o controle Combobox - cboPaises - com a informação do nome do país a partir do namespace System.Globalization:

 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        CulturaAtualDoComputador = Globalization.RegionInfo.CurrentRegion.DisplayName

        For Each Country In Globalization.CultureInfo.GetCultures(Globalization.CultureTypes.InstalledWin32Cultures)
            'muda região
            My.Application.ChangeCulture(Country.Name)
            NomePais = Globalization.RegionInfo.CurrentRegion.DisplayName
            If combobox1.Items.Contains(NomePais) = False Then
                'adiciona o nome do pais na combo
                combobox1.Items.Add(NomePais)
                'adiciona nome do pais e informações na outra combo
                cbox.Items.Add(NomePais & "/" & Globalization.RegionInfo.CurrentRegion.CurrencyNativeName & " = " & Globalization.RegionInfo.CurrentRegion.CurrencySymbol)
            End If
            'limpa o cache
            My.Application.Culture.ClearCachedData()
        Next

        'verifica a cultura atual e atribui às combobox
        If cbox.Items.Count > 0 Then
            PaisIndice = combobox1.FindString(CulturaAtualDoComputador)
            cbox.SelectedIndex = PaisIndice
            combobox1.SelectedIndex = PaisIndice
        End If

End Sub

Vamos definir uma rotina chamada VerificarMoeda que irá obter a informação da moeda e do seu símbolo a partir da combobox - cbox :

 Private Sub verificarMoeda()
        'obtem o indice do pais selecionado
        i = combobox1.FindString(combobox1.Text)
        'atribui á combo com as informações
        cbox.SelectedIndex = i
        'seleciona o nome da moeda e o simbolo
        NomeMoeda = cbox.SelectedItem.ToString.Remove(0, cbox.SelectedItem.ToString.IndexOf("/") + 1)
        SimboloMoeda = cbox.SelectedItem.ToString.Remove(0, cbox.SelectedItem.ToString.IndexOf("=") + 1).Trim
        'exibe as informações
        lblinfo.Text = combobox1.Text & " Moeda =>  " & NomeMoeda & Environment.NewLine & Environment.NewLine & "Símbolo : " & SimboloMoeda
    End Sub

Neste código obtemos as informações da moeda a partir do controle cbox e exibimos na label lblinfo do formulário.

Podemos chamar esta rotina a partir do evento Click do botão de comando Verificar ou do evento SelectedIndexChanged da combobox. Fica a seu critério.

Executando o projeto e  selecionando um país da combobox teremos o resultado abaixo:

Pegue o projeto completo aqui :   Paises_Moeda.zip

Jesus lhes respondeu, e disse: A minha doutrina não é minha, mas daquele que me enviou.
Se alguém quiser fazer a vontade Dele, pela mesma doutrina conhecerá se ela é de Deus, ou se eu falo de mim mesmo.

João 7:16,17

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 ?

Referências:


José Carlos Macoratti