VB.net组合框自动完成。

4
我有一个下拉框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个回答

11

您需要设置以下属性以使用自动完成功能

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

4

更改此设置

DropDownStyle = DropDownList

4
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

1
答案很简单。您可以按照通常的方式添加显示成员和值成员来加载下拉框。然后,通过显示成员加载自动完成即可。请记住,在正常情况下,自动完成功能基本上只是显示成员侧面的过滤选项。
以下是示例。请注意,此示例从我们的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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接