为什么在datagridview中对combobox使用自动完成时有两个列表?

问题描述 投票:0回答:2

我最近使用VB.net使用Visual Studio 2013 .Net 4.5构建了一个Windows窗体应用程序。我的一位用户在使用该应用程序时向我展示了这一点。在datagridview中,如果他们单击下拉按钮,然后开始键入,它会覆盖原始下拉列表上的自动完成。我在这做错了什么?

Private Sub Data_CreateOrder_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles Data_CreateOrder.EditingControlShowing
   If Data_CreateOrder.CurrentCell.ColumnIndex = 0 AndAlso TypeOf e.Control Is ComboBox Then
        With DirectCast(e.Control, ComboBox)
                .DropDownStyle = ComboBoxStyle.DropDown
                .AutoCompleteMode = AutoCompleteMode.SuggestAppend
                .AutoCompleteSource = AutoCompleteSource.ListItems
                .SelectAll()
                .BackColor = Color.White
        End With
    End If
End Sub

vb.net visual-studio-2013 datagridview combobox autocomplete
2个回答
0
投票

你应该看到你所看到的行为。作为ComboBox,将显示完整的项目列表(如截图的背景下拉列表中所示),原因如下:

.DropDownStyle = ComboBoxStyle.DropDown

可以看到重叠的项目列表以建议附加项目,并且只是基于当前用户输入的缩小列表。此列表显示是因为:

.AutoCompleteMode = AutoCompleteMode.SuggestAppend

如果您希望用户看到与其输入相关的缩小的选项列表,则应该期望此行为。如果您不希望显示此附加下拉列表,请删除上面的代码行。


0
投票

我希望这可以帮到你

Private Sub AdvancedDataGridView1_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles AdvancedDataGridView1.EditingControlShowing
        Dim cbo As ComboBox

        If TypeOf e.Control Is ComboBox Then`enter code here`

            cbo = e.Control

            cbo.DropDownStyle = ComboBoxStyle.DropDown

            cbo.AutoCompleteMode = AutoCompleteMode.SuggestAppend

            '  cbo.AutoCompleteSource = AutoCompleteSource.CustomSource
            cbo.AutoCompleteSource = AutoCompleteSource.ListItems



        End If
    End Sub

阿卜杜拉齐兹萨布罗

© www.soinside.com 2019 - 2024. All rights reserved.