Dimenticavo LINQ!
Premessa: aggiungi un textBox1 ed un label1 sul form.
Supponiamo di aver caricato i valori in un array di stringhe:
codice:
Dim dataSource As String() = {"primo", "secondo", "terzo", "quarto", "quinto", "sesto", "settimo", "ottavo", "nono", "decimo"}
nell'evento KeyUp del textbox puoi fare così:
codice:
Dim searchTerm As String = textBox1.Text
lunghezza = textBox1.TextLength
Dim matchQuery = From word In dataSource
Where word.StartsWith(searchTerm)
Select word
If matchQuery.ToString() <> "" Then
label1.Text = matchQuery(0).ToString()
End If
Quindi procedi con la selezione del testo :
codice:
textBox1.Text = matchQuery(0).ToString()
textBox1.SelectionStart = lunghezza
textBox1.SelectionLength = textBox1.TextLength
Può essere utile sapere che matchQuery è un array che conterrà tutte le occorrenze corrispondenti al testo digitato. Ovvero, se digiti 'q' conterrà:
matchQuery(0)="quarto"
matchQuery(1)="quinto"
P.S.
Consiglio: mi sembra che tu venga da VB6, almeno il tuo codice fa supporre questo.
Cerca di liberarti 'mentalmente' dallo stile VB6 e di 'studiarti' per benino le enormi potenzialità del .NET ad esempio metodi, proprietà ed eventi del TextBox.
Come vedi con quattro righe di codice fai tutto, meglio e con più semplicità.
Ciò si traduce anche in codice più efficiente, leggibile e soprattutto manutenibile.