Vb.net ComboBox自动完成

时间:2013-12-18 03:27:24

标签: vb.net combobox filtering

我有ComboBox DropDownStyle = Simple并将其绑定到DataSet。我想要的是:当我输入'a'时,我希望我的ComboBox只显示该项目以字母'a'开始,只是字典程序。

我已尝试AutoComplete属性,但它只显示DropDown而不是我想要的

感谢和抱歉,如果我的问题不清楚或不可理解,因为我是这里的首发。

这是我的代码:

Private Sub TICKETING_FORM_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        da.Fill(ds, "STYLE")
        bs.DataSource = ds.Tables("STYLE")

        With Style_ComboBox
            .DataSource = bs
            .DisplayMember = "STYLE"
            .ValueMember = "STYLE"
            .AutoCompleteMode = AutoCompleteMode.Suggest
            .AutoCompleteSource = AutoCompleteSource.ListItems
        End With

    End Sub

4 个答案:

答案 0 :(得分:7)

您需要为自动完成设置这些属性

ComboBox1.AutoCompleteMode = AutoCompleteMode.Append
ComboBox1.DropDownStyle = ComboBoxStyle.DropDown
ComboBox1.AutoCompleteSource = AutoCompleteSource.ListItems


Private Sub TICKETING_FORM_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        da.Fill(ds, "STYLE")
        bs.DataSource = ds.Tables("STYLE")

        With Style_ComboBox
            .DataSource = bs
            .DisplayMember = "STYLE"
            .ValueMember = "STYLE"
            .DropDownStyle = ComboBoxStyle.DropDown
            .AutoCompleteMode = AutoCompleteMode.Suggest
            .AutoCompleteSource = AutoCompleteSource.ListItems
        End With

    End Sub

答案 1 :(得分:3)

更改此设置

DropDownStyle = DropDownList

答案 2 :(得分:3)

Private Sub TICKETING_FORM_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    da.Fill(ds, "STYLE")
    bs.DataSource = ds.Tables("STYLE")

    With Style_ComboBox
        .DataSource = bs
        .DisplayMember = "STYLE"
        .ValueMember = "STYLE"
        .AutoCompleteMode = AutoCompleteMode.SuggestAppend ' This is necessary
        .AutoCompleteSource = AutoCompleteSource.ListItems
    End With

End Sub

答案 3 :(得分:0)

答案很简单。通过添加显示成员和值成员,可以像平常一样加载组合框。然后由Display成员和whala加载自动完成。请记住,在正常情况下,自动完成功能基本上只是显示器成员侧的过滤器选项。

以下是示例。请记住,此示例从我们的AD帐户中提取名称列表,此处也未显示....

Dim col As New AutoCompleteStringCollection
Dim i As Integer
If Not MyUsers Is Nothing Then
    For i = 0 To MyUsers.Rows.Count - 1
        col.Add(MyUsers.Rows(i)("displayname").ToString)
    Next
    Request_ManagerComboBox.AutoCompleteSource = AutoCompleteSource.CustomSource
    Request_ManagerComboBox.AutoCompleteCustomSource = col
    Request_ManagerComboBox.AutoCompleteMode = AutoCompleteMode.SuggestAppend
    Request_ManagerComboBox.DisplayMember = MyUsers.Rows(i - 1)("displayname").ToString
    Request_ManagerComboBox.ValueMember = MyUsers.Rows(i - 1)("samAccountName").ToString
End If