Vb.net 如何在自动完成文本框中显示连接的字符串

Vb.net 如何在自动完成文本框中显示连接的字符串,vb.net,winforms,autocompletebox,Vb.net,Winforms,Autocompletebox,我正在尝试将连接的字符串显示到自动完成文本框中 当用户开始键入时,它将按姓氏搜索。查询将查找数据库中包含的全名。。。在自动提示中,它将显示全名,公司 . 如果我只是按姓氏搜索 然后写上你的姓 MyCollection.Add(reader("last_name").ToString()) 它显示了结果 但是下面的代码没有显示任何内容 这是我的密码 有谁能建议我如何解决这个问题吗 Dim strauto As String Dim name As String na

我正在尝试将连接的字符串显示到自动完成文本框中 当用户开始键入时,它将按姓氏搜索。查询将查找数据库中包含的全名。。。在自动提示中,它将显示全名,公司

.
如果我只是按姓氏搜索 然后写上你的姓

MyCollection.Add(reader("last_name").ToString())
它显示了结果 但是下面的代码没有显示任何内容

这是我的密码

有谁能建议我如何解决这个问题吗

Dim strauto As String

       Dim name As String
       name = Trim(txtCompanyKeyContacts.Text)
       If name = "" Then Exit Sub
       Dim cnString As String = ConfigurationManager.ConnectionStrings("dbcon").ConnectionString
       Dim con As New SqlConnection(cnString)

       Using con
           strauto = "SELECT (FULL_NAME + ',' + Company + ',' + Status) as contact  FROM name where FULL_NAME like '%" & Replace(name, "'", "''") & "%' "
           'SELECT last_name,FULL_NAME + ',' + Company + ',' + Status as contact FROM name"
           con.Open()
           Dim cmd As New SqlCommand(strauto, con)

           Dim reader As SqlDataReader = cmd.ExecuteReader()
           Dim MyCollection As New AutoCompleteStringCollection()

           If reader.HasRows = True Then
               While reader.Read()


                   ' MyCollection.Add(reader("FULL_NAME + ',' + Company + ',' + Status").ToString())
                   MyCollection.Add(reader("contact").ToString())
               End While
           End If



           txtCompanyKeyContacts.AutoCompleteCustomSource = MyCollection
           con.Close()
       End Using

这个建议是另一个方向

我会使用一个组合框来让人们看到建议列表。这将使事情变得轻松一点,从而更有可能取得成功

    Dim sName As String = "elizibeth"
    Dim SQL As String = <x>
    SELECT [ContactName] + ' - ' + [CompanyName] Name
      FROM [northwind].[dbo].[Contacts] 
      WHERE soundex(ContactName) = soundex('<%= sName %>')
    </x>.Value
    Dim dt As DataTable = Gen.GetDataTable(SQL, sConnectNorthwind) ' my libray for a read-only datatable
    ComboBox1.DataSource = dt
    ComboBox1.DisplayMember = "Name"
Dim sName As String=“elizibeth”
Dim SQL作为字符串=
选择[ContactName]+'-'+[CompanyName]名称
来自[northwind].[dbo].[Contacts]
其中soundex(ContactName)=soundex(“”)
价值
Dim dt As DataTable=Gen.GetDataTable(SQL,sConnectNorthwind)“只读数据表的我的库
ComboBox1.DataSource=dt
ComboBox1.DisplayMember=“名称”

标准的自动完成功能要求控件本身中的文本实际与自动完成列表中项目的开头匹配。如果你想要别的东西,那么你必须自己实现它。在
MyCollection.Add(reader(“contact”).ToString())
Ops中,你所说的
contact
是什么意思。。实际的代码是MyCollection.Add(reader(“contact”).ToString())jmcilhinney-问题是它显示的是一些记录,而不是全部。。但是,当我在sql svr中运行相同的查询时,它显示预期的结果非常接近。。。但是当我使用这个时,我只能在comboboxAutocomplete中键入一个单词。最好与简单的单词或代码一起使用。在某些情况下,我监视TextChanged并等待3或4个字符,然后向用户显示选项列表。这大大缩小了列表的范围。