Crear un nuevo proyecto en Visual Basic
y diseñar el form tal como esta en la figura:
dentro de las propiedades del textbox prestar atención a estas en particular:
las cuales deberán ser cambiadas de la siguiente manera:
igualmente esto podemos especificarlo en el código, por lo que no es estrictamente necesario cambiar las propiedades del textbox pero igual es bueno saberlo(digo yo), en este caso, la propiedad AutoCompleteMode establece el “efecto visual” que tendrá nuestro autocomplete, sus valores pueden ser:
Append: Autocompleta en la misma linea mediante se va escribiendo
None: sin autocompletar
Suggest: ofrece las opciones en una lista desplegable abajo del textbox.
SuggestAppend: une la lista con el autocompletado en el textbox
luego en el AutoCompleteSource se especifica el CustomSource ya que seremos nosotros quienes especificaremos el origen de datos que utilizara el textbox.
Opción 1: Usando SqlDataReader
Imports System.Data
Imports System.Data.SqlClient
Public Class Form1
Dim cnn As New SqlConnection("Data Source=.\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=imagenes")
Dim cmd As SqlCommand
Dim reader As SqlDataReader
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Using cmd = New SqlCommand("select nombre from img", cnn)
cnn.Open()
reader = cmd.ExecuteReader()
While reader.Read()
Me.TextBox1.AutoCompleteCustomSource.Add(reader(0).ToString)
End While
reader.Close()
End Using
End Sub
End Class
en esta opcion aprovecho para mostrar como modificar las propiedades AutoCompleteSource y AutoCompleteMode desde el código, sin necesidad de modificar en la ventana propiedades del textbox, esto es solo para conocimiento general, cualquier opción es valida.
Imports System.Data
Imports System.Data.SqlClient
Public Class Form2
Dim cnn As New SqlConnection("Data Source=.\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=imagenes")
Dim da As SqlDataAdapter
Dim dt As DataTable
Dim sql As String = "select * from img"
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Using da = New SqlDataAdapter(sql, cnn)
dt = New DataTable()
da.Fill(dt)
Me.TextBox1.AutoCompleteSource = AutoCompleteSource.CustomSource
Me.TextBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend
Dim dr As DataRow
For Each dr In dt.Rows
Me.TextBox1.AutoCompleteCustomSource.Add(dr(0).ToString)
Next
End Using
End Sub
End Class
Compilamos, ejecutamos y ya esta.