Combobox con auto completamento

mercoledì 19 marzo 2008 - 11.00

liuc Profilo | Junior Member

Ho un combobox con funzione di autocompletamento.
Nella modalità di funzionamento base va tutto bene (intendo dire caricando da webservice l'elenco degli item ed impostando le varie proprietà autocomplete del combobox nell'evento Load del form).

Il problema è che i dati che ritorna il web service sono tanti (l'elnco dei comuni italiani) e questo rallenta l'apertura del form.
In alternativa ho pensato di caricare i dati adl webservice solo dopo che l'utente ha inserito almento un paio di caratteri nella combo; così facendo, però, quando carica i dati viene riselezionato il testo già inserito quindi se uno continua a scrivere i caratteri mancanti questi si sostituiscono a quelli già inseriti ed ovviamente non va bene.

Di seguito riporto il codice associato all'evento keyup della combo che uso per gestire il tutto :

Private Sub ComboBox1_KeyUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles ComboBox1.KeyUp
If ComboBox1.Text.Length = 1 Then
ComboBox1.Items.Clear()
ComboBox1.Items.AddRange(GetElencoComuni(e.KeyCode.ToString).ToArray(GetType(System.String)))
ComboBox1.AutoCompleteCustomSource.AddRange(GetElencoComuni(e.KeyCode).ToArray(GetType(System.String)))
ComboBox1.AutoCompleteSource = AutoCompleteSource.ListItems
ComboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend
End If
End Sub


Qualche idea ? Un altro modo per gestire la faccenda ?
Grazie

freeteo Profilo | Guru

ciao,
effettivamente il comportamento come lo descrivi tu c'e'.
L'unica cosa da fare secondo me, è dopo aver settato la AutocompleteSource, pulire la selezione della combo, quindi:

....
ComboBox1.AutoCompleteCustomSource ....
ComboBox1.SelectionStart = comboBox.Text.Length
...

in modo da fare digitare apparire correttamente quello che sta scrivendo l'utente...

ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5