You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VB.NET中实现ComboBox的自动完成功能

给ComboBox添加自动完成功能的调整方案

要让你的ComboBox具备自动完成功能,只需在绑定数据源后添加自动完成相关属性配置,具体调整如下:

  1. 选择合适的自动完成模式:

    • AutoCompleteMode.Suggest:输入时显示匹配的建议列表
    • AutoCompleteMode.Append:自动补全匹配的剩余字符
    • AutoCompleteMode.SuggestAppend:同时显示建议列表并自动补全(推荐使用)
  2. 配置自动完成数据源:由于你的ComboBox绑定了DataTable,需要将DataTable中的PNM列数据提取到AutoCompleteStringCollection中,再绑定到ComboBox的AutoCompleteCustomSource。

修改后的完整代码:

Private Sub PopulateComboBox()
    Dim query As String = "SELECT DISTINCT PNM FROM GSD UNION SELECT DISTINCT PNM FROM GSG ORDER BY PNM"
    Try
        Using con As OleDbConnection = New OleDbConnection(cn)
            Using sda As OleDbDataAdapter = New OleDbDataAdapter(query, con)
                'Fill the DataTable with records from Table.
                Dim dt As DataTable = New DataTable()
                sda.Fill(dt)

                'Insert the Default Item to DataTable.
                Dim row As DataRow = dt.NewRow()
                row(0) = ""
                dt.Rows.InsertAt(row, 0)

                'Assign DataTable as DataSource.
                ComboBox1.DataSource = dt
                ComboBox1.DisplayMember = "PNM"
                ComboBox1.ValueMember = "PNM"

                ' 配置自动完成功能
                ComboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend
                ComboBox1.AutoCompleteSource = AutoCompleteSource.CustomSource
                
                Dim autoCompleteCollection As New AutoCompleteStringCollection()
                ' 遍历DataTable,提取非空的PNM值到自动完成集合
                For Each dr As DataRow In dt.Rows
                    Dim pnmValue As String = dr("PNM").ToString().Trim()
                    If Not String.IsNullOrEmpty(pnmValue) Then
                        autoCompleteCollection.Add(pnmValue)
                    End If
                Next
                
                ComboBox1.AutoCompleteCustomSource = autoCompleteCollection
            End Using
        End Using
    Catch myerror As OleDbException
        MessageBox.Show("Error: " & myerror.Message)
    Finally
    End Try
End Sub

Private Sub ComboBox1_SelectionChangeCommitted(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectionChangeCommitted
    fillDataGridView1()
    fillDataGridView2()
End Sub

说明:

  • 跳过了DataTable中的第一个空行,避免自动完成列表出现空条目
  • 可根据需求修改AutoCompleteMode的值,比如只需要建议列表就改成AutoCompleteMode.Suggest

内容的提问来源于stack exchange,提问作者roy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 08:50:28