2013-03-06 111 views
0

我一直在阅读的每一个评论说,这段代码工作.. 但是,当我尝试键入文本到文本框没有自动完成出现,它只是闪烁..请帮助, ,即时通讯新的WinForms文本框不显示自动完成,文本框只是闪烁

Private Sub txsCusID_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txsCusID.TextChanged 
    Dim cmd As New SqlClient.SqlCommand("SELECT DISTINCT fname + ' ' + lname AS clist FROM tblclient WHERE id LIKE '%" + txsCusID.Text.ToString + "%'", sqlconstr) 
    Dim ds As New DataSet 
    Dim da As New SqlClient.SqlDataAdapter(cmd) 
    da.Fill(ds, "list") 
    Dim col As New AutoCompleteStringCollection 
    Dim i As Integer 
    For i = 0 To ds.Tables(0).Rows.Count - 1 
     col.Add(ds.Tables(0).Rows(i)("clist").ToString()) 
    Next 
    txsCusID.AutoCompleteSource = AutoCompleteSource.CustomSource 
    txsCusID.AutoCompleteCustomSource = col 
    txsCusID.AutoCompleteMode = AutoCompleteMode.Suggest 
End Sub 
+0

什么是sqlconstr?如果它是一个实际的字符串,我不认为它会工作,因为SqlCommand需要一个实际的SqlConnection对象。如果你尝试一下代码,会发生什么? – pinkfloydx33 2013-03-06 00:26:55

+0

@ pinkfloydx33 sqlconstr是一个sqlclient.sqlconnection。我试图把col.add后的MsgBox(ds.Tables(0).Rows(i)(“clist”)。ToString())并显示'name',所以我知道查询没有返回null 。 – 2013-03-06 00:47:18

+0

尝试删除.ToString()使其成为'col.Add(ds.Tables(0).Rows(i)(“clist”))'ToString将为您提供Object.ToString,它通常只是“名称”正如你所说的 – pinkfloydx33 2013-03-06 01:24:00

回答

0

这里试试这个......我建议你设置表最多,然后依次通过,同时添加到您的源...

Dim dtCustomerNames As DataTable 
    dtCustomerNames = ds.Tables(0) 


    For Each row As DataRow In dtCustomerNames.Rows 
     'You have to continue to add your data here...' 
     txsCusID.AutoCompleteCustomSource.Add((row.Item("clist").ToString)) 
    Next 

    txsCusID.AutoCompleteMode = AutoCompleteMode.Suggest 
    txsCusID.AutoCompleteSource = AutoCompleteSource.CustomSource 

让我知道如何它适合你...

谢谢!