如何使组合框向上/向下键在 DroppedDown = True 时模拟鼠标

Posted

技术标签:

【中文标题】如何使组合框向上/向下键在 DroppedDown = True 时模拟鼠标【英文标题】:How To Make Combo Box Up/Down Keys Mimic Mouse When DroppedDown = True 【发布时间】:2012-08-20 18:37:37 【问题描述】:

我有绑定到绑定源的组合框。问题是当我在组合框中打开下拉菜单并单击向上或向下键盘键时,它会导致绑定源更改其位置并且事件开始触发,但不应该如此。只有当我按 Enter 或 Tab 键或用鼠标单击它时才会触发它。

到目前为止我尝试的是:

我尝试继承文本框并自己处理事件

Protected Overrides Sub OnKeyDown(ByVal e As System.Windows.Forms.KeyEventArgs)
    If Me.DroppedDown Then
        e.Handled = True
    Else
        MyBase.OnKeyDown(e)
    End If
End Sub

但问题是当按下向上或向下键时,突出显示不会移动到任何地方。当组合框处于下拉模式时,我想模仿鼠标的行为。当鼠标悬停在项目上时,它会突出显示当前项目,但不会导致绑定源更改。 谢谢。

【问题讨论】:

【参考方案1】:

我认为,如果您将 SelectedIndexChanged 中的内容移至 SelectionChangeCommited,它应该可以解决问题。每当您使用 SelectedIndexChanged 更改索引时,它都会自动触发。 SelectionChangeCommited 在做出最终选择时发生。

【讨论】:

我使用的是 bindingSource.positionChanged 而不是 selectedindexchanged

以上是关于如何使组合框向上/向下键在 DroppedDown = True 时模拟鼠标的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用向上/向下键在 Visual Studio 中滚动方法重载?

防止向下箭头或向上箭头更新 MS Access 中的组合框

角度下拉菜单 - 使用键盘上/下键在下拉列表中移动项目

在组合框中使用向下/向上箭头键选择数据而不更新数据,直到点击选项卡或输入 MS Access

防止“向上箭头”键在文本框中重置光标位置

JavaFX:以编程方式展开组合框