Combobox 如何在vb中过滤组合框值

Combobox 如何在vb中过滤组合框值,combobox,Combobox,我是VB新手。我在VB中有一个“策略编号”组合框,在我输入策略编号的前四位数字后会填充该组合框。但是,如果我继续键入该编号,它将覆盖我已键入的内容并清除下拉列表,就像选择我输入的新4个数字一样。我想实现这样一个场景:在我继续输入策略时,输入前4个数字以填充下拉列表。否将搜索下拉列表中的值 例如:保单编号:969003648,当我键入9690时,下拉列表中填写的是从96900001开始的保单编号,现在当我继续键入969003等值时,搜索的值仅限于以969003作为起始值的保单编号…请协助 我的代码

我是VB新手。我在VB中有一个“策略编号”组合框,在我输入策略编号的前四位数字后会填充该组合框。但是,如果我继续键入该编号,它将覆盖我已键入的内容并清除下拉列表,就像选择我输入的新4个数字一样。我想实现这样一个场景:在我继续输入策略时,输入前4个数字以填充下拉列表。否将搜索下拉列表中的值

例如:保单编号:969003648,当我键入9690时,下拉列表中填写的是从96900001开始的保单编号,现在当我继续键入969003等值时,搜索的值仅限于以969003作为起始值的保单编号…请协助

我的代码:

Private Sub PolicyNo_KeyDown(KeyCode As Integer, Shift As Integer)

If KeyCode = 46 Or KeyCode = 8 Then
Me.PolicyNo.value = ""
Else

If Len(Me.PolicyNo.Text) >= 4  Then
Me.PolicyNo.RowSource = ""
Call ReloadPolicyNo(Nz(Me.PolicyNo.Text, ""))

Function ReloadPolicyNo(sPolicyNo As String)

Me.PolicyNo.RowSource = "SELECT Inventory.PolicyNo FROM Inventory " & _
                          "WHERE Left(Inventory.PolicyNo," & Len(Me.PolicyNo.Text) & ")  = '" & Me.PolicyNo.Text & "' order by Inventory.PolicyNo"
End Function

为什么不在组合框上使用Textchanged事件来获取组合框中当前的内容

范例

    'THIS FIRES WHEN TEXT IS ENTERED INTO THE COMBOBOX
Private Sub ComboBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.TextChanged

    'GET VALUE IN COMBOBOX
    Dim enteredText As String = ComboBox1.Text
    Dim strSelect As String = "select * from table where field like = '" & enteredText & "'%"

    'load COMBO BOX HERE

End Sub
这里最好使用DataView,我将DataTable声明为类变量

从数据库获取所有数据并将其绑定到声明的DataTable,此DataTable进一步添加到DataView,并使用RowFilter筛选DataView。 Compay_Type是下面my DataTable中的一列,代码将过滤DataView并绑定列Company_Type=1的数据


要删除筛选器,只需使用dvComp.RowFilter=Nothing

您是否否决了我的答案?你是否觉得我的诚实有害,因为你习惯于与不诚实的人打交道,背后攻击别人?现在我该怎么处理你的答案呢?客观上是错误的,因为没有解决OP的问题;它甚至没有很好的格式,没有时间做这些,但是有足够的时间去探访4岁的孩子,问他们一些问题来打扰别人。它应该得到否决票,但我不会这么做。我很少反对非建设性的、通常是武断的、懦夫式的攻击;另外,也正是由于你这样的态度,我不再为此做出贡献了。
Dim dt as DataTable
            Dim dvComp As New DataView(dt)
            dvComp.RowFilter = "Company_Type=1"
            ComboBox1.DisplayMember = "CompanyName"
            ComboBox1.ValueMember = "CompanyID"
            ComboBox1.DataSource = dvComp