防止向下箭头或向上箭头更新 MS Access 中的组合框
Posted
技术标签:
【中文标题】防止向下箭头或向上箭头更新 MS Access 中的组合框【英文标题】:Prevent down arrow or up arrow from updating a combo box in MS Access 【发布时间】:2017-06-15 21:46:16 【问题描述】:通常当用户在组合框下拉菜单中看到搜索字符串结果时,自然的反应是向下箭头指向他们确定的结果。
但是,如果我的用户单击向下箭头,它将更新组合框,从而不会按预期跳转到记录。我想限制组合框仅在用户点击“Tab”、“Enter”或鼠标点击时才感知更新。
我编写的组合框搜索可以正常工作。
这是我在 On Key Up 事件中的代码
Private Sub cboGCPC_Search_KeyUp(KeyCode As Integer, Shift As Integer)
Dim strSQL As String
strSQL = "SELECT * " _
& "FROM qryGCPC_Search " _
& "WHERE [DocumentNumber] Like '*" & Me.cboGCPC_Search.text & "*' OR [Description] Like '*" & Me.cboGCPC_Search.text & "*' OR [Vendor] Like '*" & Me.cboGCPC_Search.text & "*' OR [Receiver] Like '*" & Me.cboGCPC_Search.text & "*';"
Debug.Print strSQL
Me.cboGCPC_Search.RowSource = strSQL
Me.cboGCPC_Search.Dropdown
End Sub
【问题讨论】:
我想我知道你在说什么,但有点不清楚你所说的“更新”是什么意思。 “如果我的用户单击向下箭头,它将更新组合框,”“限制组合框以仅感知更新......”。 cbo 每次击键都会更新,不是吗? “Tab”、“Enter”或鼠标点击会发生什么? 为了澄清,我指的是会导致组合框“失去焦点”的击键。一旦失去焦点,组合框就被认为已更新。这反过来会触发 AfterUpdate 事件。当用户在“按键事件”中键入时,组合框还没有确定。但是当用户单击向下箭头(或输入或制表符,或单击鼠标)时,组合框 IS 被认为已更新,因为它失去了组合框的焦点。当用户使用向上或向下键进行扫描时,必须有一种方法来阻止向下箭头键或向上箭头键导致 AfterUpdate 事件触发。 【参考方案1】:我认为您正在寻找这样的东西:
Private Sub cboGCPC_Search_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = 38 Then
KeyCode = 0
'Me.Combo0.Dropdown 'try this too, if necessary.
'Exit Sub 'try this too, if necessary.
End If
If KeyCode = 40 Then
KeyCode = 0
'Me.Combo0.Dropdown 'try this too, if necessary.
'Exit Sub 'try this too, if necessary.
End If
End Sub
【讨论】:
38 是向上箭头,40 是向下箭头。 msdn.microsoft.com/en-us/library/… 没错。非常感谢你。我添加了我的实现方式。 有一个小故障。我昨天没注意到。用户选择一个值后,它会触发 AfterUpdate,但组合框保持下拉状态。我显然需要将 Enter、Tab 或鼠标单击隔离为触发 AfterUpdate 并关闭下拉列表的唯一键。不知道如何关闭它。我假设触发 AfterUpdate 会关闭下拉菜单。 好的,所以最终答案现在显示在“这是我实现 WAZZ 答案的方式。我添加了“案例 1、9、13”,这有效地确保了 Key Up 事件在用户单击鼠标 (1)、Tab (9) 或 Enter (13)。Wazz 最初在他的 cmets 中说“试试这个”。事实证明两者都是必要的,但在不同的情况下。【参考方案2】:这是我实现 WAZZ 答案的完整方式。
Private Sub cboGCPC_Search_KeyUp(KeyCode As Integer, Shift As Integer)
Dim strSQL As String
strSQL = "SELECT * " _
& "FROM qryGCPC_Search " _
& "WHERE [DocumentNumber] Like '*" & Me.cboGCPC_Search.text & "*' OR [Description] Like '*" & Me.cboGCPC_Search.text & "*' OR [Vendor] Like '*" & Me.cboGCPC_Search.text & "*' OR [Receiver] Like '*" & Me.cboGCPC_Search.text & "*';"
Debug.Print strSQL
Select Case KeyCode
Case 38, 40
KeyCode = 0
Case 1, 9, 13
Exit Sub
Case Else
Me.cboGCPC_Search.RowSource = strSQL
Me.cboGCPC_Search.Dropdown
End Select
End Sub
【讨论】:
以上是关于防止向下箭头或向上箭头更新 MS Access 中的组合框的主要内容,如果未能解决你的问题,请参考以下文章
JQuery:Keyup,如何防止箭头(向上和向下)的默认行为并输入键?