我最近使用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
你应该看到你所看到的行为。作为ComboBox
,将显示完整的项目列表(如截图的背景下拉列表中所示),原因如下:
.DropDownStyle = ComboBoxStyle.DropDown
可以看到重叠的项目列表以建议附加项目,并且只是基于当前用户输入的缩小列表。此列表显示是因为:
.AutoCompleteMode = AutoCompleteMode.SuggestAppend
如果您希望用户看到与其输入相关的缩小的选项列表,则应该期望此行为。如果您不希望显示此附加下拉列表,请删除上面的代码行。
我希望这可以帮到你
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
阿卜杜拉齐兹萨布罗