FILTRAGEM DE UMA LISTBOX

PROGRAMADORVBNET 12/11/2025 14:45:23
#506162
Alterado em 12/11/2025 14:49:56 olá boa tarde pessoal.
Estou com um problema em fazer a filtragem á medida que escrevo numa textbox.text o exemplo ele faz a filtragem , mas quando apago um caracter ele não mostra a lista seguinte se tiver para mostrar mais alguns dados. será que alguém tem a gentileza de me ajudar?
Deixo aqui o exemplo para que me possam ajudar.
sem outro assunto de momento.
Vítor Teles
PROGRAMADORVBNET 13/11/2025 11:57:48
#506166
  ' O quadro é o nome da  ListBox
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
Dim items = From it In Quadro.Items.Cast(Of Object)()
Where it.ToString().IndexOf(TextBox1.Text, StringComparison.CurrentCultureIgnoreCase) >= 0
Dim matchingItemList As List(Of Object) = items.ToList()
Quadro.BeginUpdate()
Quadro.Items.Clear()
For Each item In matchingItemList
Quadro.Items.Add(item)
Next
Quadro.EndUpdate()
End Sub


Estou com um problema em fazer a filtragem á medida que escrevo numa textbox.text o exemplo ele faz a filtragem , mas quando apago um caracter ele não mostra a lista anterior se tiver para mostrar mais alguns dados.Deixo aqui o código para todos verem porque está em VB.net 2019 o ficheiro.
Será que alguém tem a gentileza de me ajudar?
Deixo aqui o exemplo para que me possam ajudar.
sem outro assunto de momento.
Vítor Teles
WEBMASTER 13/11/2025 12:07:06
#506170
Alterado em 13/11/2025 12:07:53 Será que só não tá faltando justamente o tratamento de matchingItemList ?
Algo como quando matchingItemList.count == 0 então mostra tudo de volta ?

Sugestão: veja se não tem componente pronto para isso, tipo um Select2 para o VB.net
PROGRAMADORVBNET 13/11/2025 13:39:14
#506171
Olá WebMaster Boa Tarde.
Pode fazer o favor de exemplificar com o exemplo que facultei em cima , por favor, é que não estou a ver como fazer plese!
PROGRAMADORVBNET 16/11/2025 06:35:16
#506175
Ninguém para me ajudar?
DAMASCENO.CESAR 19/11/2025 19:19:43
#506183
PROGRAMADORVBNET como você preenche o list box?
Já pensou em usar o binding source?
voce filtra bem fácil por ele
DAMASCENO.CESAR 19/11/2025 19:22:41
#506184
Complementando, o WEBMASTER está certo, você recarrega o matchingItemList cada vez que altera o texto, nunca voltando aos dados originais, aí é que está o erro ao apagar um caractere
PROGRAMADORVBNET 26/11/2025 14:40:03
#506190
Olá Boa tarde César não tem um exemplo que me possa facultar? Ficaria muito agradecido.
PROGRAMADORVBNET 30/11/2025 07:25:52
#506191
Alterado em 30/11/2025 07:28:18 Presados, tenho este exemplo que arranjei , mas ele não faz a atualização se quisermos ( ele até funfa quando inicio o programa o problema é ele juntar á listbox1(quadro) mais itens e absovelos á ( listaOriginal ) , alguém me pode ajudar ?

 Public listaOriginal As New List(Of String)
Public jaInicializado As Boolean = False


If Not jaInicializado Then
listaOriginal = Quadro.Items.Cast(Of String)().ToList()
jaInicializado = True
End If

Quadro.BeginUpdate()
Quadro.Items.Clear()

Dim filtro As String = TextBox1.Text.Trim().ToLower()

Dim itensFiltrados As IEnumerable(Of String)

If String.IsNullOrEmpty(filtro) Then
itensFiltrados = listaOriginal
Else
itensFiltrados = listaOriginal.Where(Function(item) item.ToLower().Contains(filtro))
End If

Quadro.Items.AddRange(itensFiltrados.ToArray())
Quadro.EndUpdate()
end if
Faça seu login para responder