Ok I wasnt able to find it so i gave up the search and coded it myself. Now as far as I can tell it works fine... but I would like to have some of you guys check it out and make any suggestions on potential problems or bad coding

Now what I did was create a class library for this so I could compile it and add it to my windows app, what I use the autocomplete combo is USUALLY for the state field in an address entry, but I use it for pretty much every combo that you dont want the user to enter their own value.

When I inherited the combobox in my class it automatically added 2 protected subs ("Refresh Item" <- no space but spells $hit when together and VBForums doesnt like that, and "SetItemsCore"). I am not sure why (maybe someone can tell me) so I just passed them up to the base class.

NOTE: while the code could be altered to do differently, this code is LIMIT TO LIST only, which means the user cant put in their own text if its not in the drop down list (perfect for a state combo for example)

VB Code:
  1. Imports System.Windows.Forms
  2. Public Class AutoCompleteCombo
  3.     Inherits ComboBox
  4.  
  5.     'underscore added in sub name to bypass VBForum filter
  6.     Protected Overrides Sub Refresh_Item(ByVal index As Integer)
  7.         MyBase.Refresh_Item(index)
  8.     End Sub
  9.  
  10.     Protected Overrides Sub SetItemsCore(ByVal items As System.Collections.IList)
  11.         MyBase.SetItemsCore(items)
  12.     End Sub
  13.  
  14.     Public Shadows Sub KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress
  15.         Dim intIndex As Integer
  16.         Dim strEntry As String
  17.  
  18.         If Char.IsControl(e.KeyChar) Then
  19.             If MyBase.SelectionStart <= 1 Then
  20.                 MyBase.Text = String.Empty
  21.                 MyBase.SelectedIndex = -1
  22.                 e.Handled = True
  23.                 Exit Sub
  24.             End If
  25.             If MyBase.SelectionLength = 0 Then
  26.                 strEntry = MyBase.Text.Substring(0, MyBase.Text.Length - 1)
  27.             Else
  28.                 strEntry = MyBase.Text.Substring(0, MyBase.SelectionStart - 1)
  29.             End If
  30.         ElseIf (Not Char.IsLetterOrDigit(e.KeyChar)) And (Not Char.IsWhiteSpace(e.KeyChar)) Then  '< 32 Or KeyAscii > 127 Then
  31.             Exit Sub
  32.         Else
  33.             If MyBase.SelectionLength = 0 Then
  34.                 strEntry = UCase(MyBase.Text & e.KeyChar)
  35.             Else
  36.                 strEntry = MyBase.Text.Substring(0, MyBase.SelectionStart) & e.KeyChar
  37.             End If
  38.         End If
  39.  
  40.         intIndex = MyBase.FindString(strEntry)
  41.  
  42.         If intIndex <> -1 Then
  43.             MyBase.SelectedIndex = intIndex
  44.             MyBase.SelectionStart = strEntry.Length
  45.             MyBase.SelectionLength = MyBase.Text.Length - MyBase.SelectionStart
  46.         End If
  47.         e.Handled = True
  48.         Exit Sub
  49.     End Sub
  50. End Class

hope it helps someone if they have been looking for something like this