【问题标题】:Autocomplete with a Textbox使用文本框自动完成
【发布时间】:2014-09-03 13:50:02
【问题描述】:

我正在尝试在我的 winform 中添加一个自动完成框。

当我将GetDatabaseContent() 应用到combo box 时,它可以正常工作,但我想将它添加到textbox

我当前代码的问题是将我的 Datatable 的内容作为单行而不是列表。

任何帮助都会很棒。

Private Sub frmUser_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

    Dim mystring

    Dim dt As DataTable = GetDatabaseContent()
    mystring = FetchTable(dt)
    Dim newstr As New AutoCompleteStringCollection
    newstr.Add(mystring)
    txtbox.AutoCompleteCustomSource = newstr


End Sub

Function FetchTable(dt As DataTable)
    Dim mystring = ""
    For Each dr As DataRow In dt.Rows
        mystring &= dr.Item(0).ToString
    Next
    Return mystring
End Function

【问题讨论】:

  • 我不认为普通的文本框没有这种行为。通常你使用组合框。对于您想要的行为,您可能需要找到另一个控件(或进行一些黑客操作以自定义 ComboBox 以不显示箭头按钮)

标签: vb.net winforms textbox


【解决方案1】:

您只是创建单行文本用作数据源,因此请尝试将每一行文本添加到集合中:

Dim newstr As New AutoCompleteStringCollection
For Each dr As DataRow In dt.Rows
  newstr.Add(dr.Item(0).ToString)
Next
TextBox1.AutoCompleteMode = AutoCompleteMode.Suggest
TextBox1.AutoCompleteSource = AutoCompleteSource.CustomSource
TextBox1.AutoCompleteCustomSource = newstr

【讨论】:

  • 大声笑 - 30 分钟前你在哪里?我发现我错过了一个循环。盯着代码看太久会迷路。
猜你喜欢
  • 2018-04-03
  • 2011-12-13
  • 2011-04-18
  • 2010-09-22
  • 2019-11-08
  • 2018-01-25
  • 2011-09-13
相关资源
最近更新 更多