Ciao Giacomo.
Penso che nei 2-3 secondi che impiega per il caricamento un buon 50% è dovuto al tempo che impiega a caricare i dati (Connessione al DB e recupero dei dati) e il restante è il tempo utilizzato per creare graficamente gli oggetti nella combo.
Non so se sei in ascolto anche dell'evento SelectIndexChange sulla combo box. Se si, allora ti conviene utilizzare un flag. Una cosa del tipo:
flag = true
combo.datasource = .....
combo.displaymember = .....
combo.Valuemember = .....
flag = false
private sub .......... handles combo.SelectIndexChange
if flag = false
end if
end sub
questo perchè non appena associ il datasource alla combo, per ogni elemento della tabella viene scatenato l'evento selectIndexChange e quindi potrebbe rellentarti la cosa.
Prova a fare anche questo. se ho capito bene i dati che carichi nella combo cambiano a seconda della scelta che fai su un altro componente. A questo punto allora puoi caricare nella sorgente dati della combo tutti i possibili valori. Poi invece di associare l'intera tabella, ti fai un DataView sulla sorgente dati filtrando secondo il parametro di ricerca e poi associ il dataview.ToTable() al datasource della combo. Poi ti basta cambiare il RowFilter del dataview e riassociarlo alla combo ogni qualvolta devi visualizzare altri dati. In questo fai un solo accesso al DB. La cosa dovrebbe essere un po più veloce (sicuramente sul cambio di visualizzazione dei valori)
ciao
Cristian Barca