Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Filtro Checked listbox

16 views
Skip to first unread message

Marco75

unread,
Mar 30, 2022, 4:18:33 AM3/30/22
to
ciao,
ho una Checkedlistbox popolata tramite una query da SQL Server.
vorrei inserire un campo ricerca dove, man mano che digito esegue il filtro sugli item restituendomi quelli corrispondenti.

ho provato questo codice, funziona nel senso che mi porta al primo item che trova basato su quanto sto digitando, ma vorrei che andasse a filtrare mostrando solo quello che corrisponde e non portarmi all'item mostrando comunque tutto il resto, è possibile?

questo il codice:
Private Sub tb_Cerca_TextChanged(sender As Object, e As EventArgs) Handles tb_Cerca.TextChanged

tb_Cerca.Text = UCase(tb_Cerca.Text)
tb_Cerca.SelectionStart = tb_Cerca.TextLength

CklbSelezionaFlowChart.SelectedItems.Clear()
If tb_Cerca.Text <> "" Then
Dim count As Integer = (CklbSelezionaFlowChart.Items.Count - 1)
Dim words As String
Dim a As Integer

For a = 0 To count
words = CklbSelezionaFlowChart.Items.Item(a)
If words.ToUpper.Contains(tb_Cerca.Text.ToUpper) Then
CklbSelezionaFlowChart.SelectedItems.Add(CklbSelezionaFlowChart.Items.Item(a))
CklbSelezionaFlowChart.Sorted = True
End If
Next
End If

grazie
Marco

Marco75

unread,
Mar 30, 2022, 9:30:09 AM3/30/22
to
ho trovato un codice che fa al caso mio:

If Trim(tb_Cerca.Text) = "" Then Exit Sub

Dim lb As ListBox = New ListBox
Dim s As Integer = 0
For s = 0 To CklbSelezionaFlowChart.Items.Count - 1
If InStr(CklbSelezionaFlowChart.Items(s).ToString, tb_Cerca.Text) Then
lb.Items.Add(CklbSelezionaFlowChart.Items(s))
End If
Next

CklbSelezionaFlowChart.Items.Clear()
For s = 0 To lb.Items.Count - 1
CklbSelezionaFlowChart.Items.Add(lb.Items(s).ToString)
Next
lb.Dispose()

così la listbox mostra solo gli Item a seguito del filtro però se cancello tutto o parte di quanto inserito in TextBox non ripropone gli item che ha filtrato ma devo rieseguire la query..
in attesa di cortese risposta provo a vedere se risolvo
grazie
Marco

Freccia (VegetaSSj)

unread,
Apr 3, 2022, 9:53:04 AM4/3/22
to
Su "it.comp.lang.visual-basic", ==Marco75=> ha scritto:

> cosģ la listbox mostra solo gli Item a seguito del filtro perņ se
> cancello tutto o parte di quanto inserito in TextBox non ripropone
> gli item che ha filtrato ma devo rieseguire la query.. in attesa di
> cortese risposta provo a vedere se risolvo

Fatti una classe di appoggio es.
Class MyItem
Property Value as string
End Class

Poi all'avvio ti carichi un List(Of Item), e quando cerchi con Linq fai
Dim listaFiltrata= listaCompleta.Where(Function (t)
t.Value.ToUpper().Contains(tb_Cerca.Text.ToUpper())

A questo punto chiami una sub che carica gli elementi spuntati.

Se ti serve tenere in memoria le spunte degli elementi non filtrati
aggiunti una proprietą Checked alla classe MyItem.


--
Freccia@Bulldozer63 :D

Marco75

unread,
Apr 6, 2022, 6:50:01 AM4/6/22
to
grazie, non so perchè non ho ricevuto la mail della tua risposta che vedo solo ora...
Marco
0 new messages