VB .NET - Filtrando dados em um ListBox (para novatos)


  Neste artigo vamos rever os conceitos relacionados com o componentes ListBox, DataTables e DataViews e mostrar como filtrar dados em um controle ListBox na linguagem VB .NET.

O controle ListBox é muito versátil e muito utilizado para exibir informações em aplicações Windows Forms usando a linguagem VB .NET.

Eu já escrevi dezenas de artigos sobre este controle(veja as referências), e, hoje volto ao assunto mostrando como filtrar dados em um ListBox.

Este é um artigo muito simples indicado para quem esta iniciando com a linguagem VB .NET.

Recursos usados :

Filtrando dados em um ListBox

Abra o VS Community 2015  e clique em New Project;

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

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

No formulário padrão form1.vb vamos incluir os seguintes controles:

Agora no formulário form1.vb vamos declarar as variáveis a seguir:

Private dtPaises As New DataTable()
Dim
listaPaises As New SortedDictionary(Of String, String
)

Estamos criando uma instância da classe DataTable() para preencher com os nomes dos países.

A classe SortedDictionary() representa uma coleção de pares chave/valor que é ordenado pela chave.

A seguir vamos criar um método chamado carregaDados() onde criamos a coluna Pais no DataTable() e incluímos os nomes dos países que desejamos exibir no ListBox:

 Private Function carregaDados() As DataTable
        dtPaises.Columns.Add("Pais")
        dtPaises.Rows.Add("Argentina")
        dtPaises.Rows.Add("Brasil")
        dtPaises.Rows.Add("Bolívia")
        dtPaises.Rows.Add("Chile")
        dtPaises.Rows.Add("China")
        dtPaises.Rows.Add("Dinamarca")
        dtPaises.Rows.Add("França")
        dtPaises.Rows.Add("Inglaterra")
        dtPaises.Rows.Add("India")
        dtPaises.Rows.Add("Japão")
        dtPaises.Rows.Add("Lituânia")
        dtPaises.Rows.Add("Marrocos")
        dtPaises.Rows.Add("Nicaragua")
        dtPaises.Rows.Add("Omã")
        dtPaises.Rows.Add("Peru")
        dtPaises.Rows.Add("Quênia")
        dtPaises.Rows.Add("Romênia")
        dtPaises.Rows.Add("Suiça")
        dtPaises.Rows.Add("Turquia")
        dtPaises.Rows.Add("Ucrânia")
        dtPaises.Rows.Add("USA")
        dtPaises.Rows.Add("Venezuela")
        Return dtPaises
    End Function

No evento Load do formulário vamos chamar o método carregaDados() e atribuir o seu retorno à propriedade DataSource do controle ListBox.

Vamos também informar ao controle que desejamos exibir os valores da coluna Pais do DataTable :

 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ListBox1.DataSource = carregaDados()
        ListBox1.DisplayMember = "Pais"
End Sub

Agora vamos usar o evento TextChanged do controle TextBox e montar um filtro usando a propriedade RowFilter do controle DataView usando uma consulta com a cláusula LIKE e o texto que o usuário digitou no TextBox:

Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
        Dim dvPaises As DataView = dtPaises.DefaultView
        dvPaises.RowFilter = "Pais LIKE '%" & TextBox1.Text & "%'"
End Sub

A propriedade RowFilter  define a expressão usada para filtrar quais linhas serão exibidas em DataView.

Para formar um valor de RowFilter , especifique o nome de uma coluna seguido por um operador e um valor para sobre filtragem.

Executando o projeto e digitando algum texto na caixa de texto iremos obter o seguinte resultado:

Quer saber como exibir em um ListBox ou Combobox uma lista dos países usando os recursos do sistema ?

Veja este vídeo :  Carregando uma lista de Países usando o namespace

Pegue o projeto completo aqui :  Filtrando_ListBox_VBNET.zip

Porque a lei foi dada por Moisés; a graça e a verdade vieram por Jesus Cristo.
Deus nunca foi visto por alguém. O Filho unigênito, que está no seio do Pai, esse o revelou.
João 1:17,18

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 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti