【问题标题】:textbox not showing autocomplete, the textbox just blinks文本框不显示自动完成,文本框只是闪烁
【发布时间】:2013-03-06 00:19:38
【问题描述】:

我读到的每一条评论都说这段代码有效.. 但是当我尝试在文本框中输入文本时,没有自动完成出现,它只是闪烁..请帮助,我是 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

【问题讨论】:

  • 什么是 sqlconstr?如果它是一个实际的字符串,我认为它不会像 SqlCommand 期望一个实际的 SqlConnection 对象那样工作。如果您尝试单步执行代码,会发生什么?
  • @pinkfloydx33 sqlconstr 是一个 sqlclient.sql 连接。我尝试将 MsgBox(ds.Tables(0).Rows(i)("clist").ToString()) 放在 col.add... 之后,它显示了“名称”,所以我知道查询没有返回 null .
  • 尝试删除 .ToString() 以使其成为 col.Add(ds.Tables(0).Rows(i)("clist")) ToString 会给你 Object.ToString 这通常只是你所说的“名称”

标签: vb.net winforms autocomplete textbox


【解决方案1】:

在这里试试这个...我建议设置您的表格,然后在添加到您的源时循环...

    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

让我知道你的效果如何......

谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-12
    • 1970-01-01
    • 2012-11-18
    • 2011-12-22
    • 1970-01-01
    • 2011-04-18
    • 2010-09-22
    相关资源
    最近更新 更多