VB .NET - Localizando itens em um ListBox/ComboBox


Já escrevi alguns artigos sobre os controles de Lista ListBox e Combobox e neste artigo vou mostrar como realizar uma busca e uma busca exata nestes controles de lista.

Inicie um novo projeto no VS.NET do tipo Windows Application e no formulário padrão insira um controle ListBox , um controle ComboBox e alguns botões de comando e caixas de texto conforme figura abaixo:

O objetivo é incluir alguns itens nos controles de lista : lstProcura e cboProcura usando o método Add a coleção Items

O código do evento Click do botão - Incluir Item (btnInclui) é mostrado abaixo:

Private Sub btnInclui_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnInclui.Click
        Try
            'Inclui alguns itens nos controles de lista
            lstProcura.Items.Add(txtInclui.Text)
            cmbProcura.Items.Add(txtInclui.Text)
        Catch t As Exception
            MessageBox.Show(t.Message, " Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub

 

Os itens incluídos podem ser vistos no listbox e combobox. A próxima etapa e realizar uma busca não exata. Para isto usamos o código no evento Click do botão : Procura:

O botão procura realiza uma busca não exata usando o método FindString do objeto controle de  lista. Se  o usuário selecionou realizar uma busca exata então o método usado é o método FindStringExact.

 Private Sub btnProcura_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnProcura.Click
        Try
            'verifica se o usuário selecionou a localização exata e faz os ajustes
            If chkProcuraExata.CheckState = CheckState.Checked Then
                lstProcura.SelectedIndex = lstProcura.FindStringExact(txtProcura.Text)
                cmbProcura.SelectedIndex = cmbProcura.FindStringExact(txtProcura.Text)
            Else
                lstProcura.SelectedIndex = lstProcura.FindString(txtProcura.Text)
                cmbProcura.SelectedIndex = cmbProcura.FindString(txtProcura.Text)
            End If
        Catch t As Exception
            MessageBox.Show(t.Message, " Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub

O código abaixo esta no botão Próximo; ele verifica se estamos no fim dos controles e se for o caso faz com que o índice retorne ao início.

Conforme a seleção do usuário é feita a busca ou a busca exata.

Private Sub btnProcuraProximo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnProcuraProximo.Click
        Try

            'Verifica se estamos no fim do listbox antes de procurar novamente
            'Se estiver no fim retorna o indice ao inicio
            If lstProcura.SelectedIndex + 1 = lstProcura.Items.Count Then
                lstProcura.SelectedIndex = -1
                cmbProcura.SelectedIndex = -1
            End If

            'verifica se o usuario selecionou a busca por string exata
            If chkProcuraExata.CheckState = CheckState.Checked Then
                lstProcura.SelectedIndex = lstProcura.FindStringExact(txtProcura.Text, lstProcura.SelectedIndex)
                cmbProcura.SelectedIndex = cmbProcura.FindStringExact(txtProcura.Text, cmbProcura.SelectedIndex)
            Else
                lstProcura.SelectedIndex = lstProcura.FindString(txtProcura.Text, lstProcura.SelectedIndex)
                cmbProcura.SelectedIndex = cmbProcura.FindString(txtProcura.Text, cmbProcura.SelectedIndex)
            End If
        Catch t As Exception
            MessageBox.Show(t.Message, " Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub

 

Executando o projeto e fazendo alguns testes temos o resultado como exibido abaixo:

Eu sei é apenas VB.NET , mas eu gosto ...

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