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.