【问题标题】:MS Access button with on click and on double click events (VBA)具有单击和双击事件的 MS Access 按钮 (VBA)
【发布时间】:2017-10-25 02:04:50
【问题描述】:

我在 ms-access 中的表单上有一个按钮,其中填充了“On Click”和“on Dbl Click”事件。我遇到了单击事件有效的问题,但双击不会,除非在第二次单击时,我一直按住它并在释放它之前将鼠标拖离按钮。这个按钮的作用是根据 2 次不同的点击,用某些文本填充文本框。我该如何解决这个双击问题?按钮的代码如下。请注意,Task_ID_AfterUpdate() 还通过在 Query 中查找 Me.Task_ID 来填充文本字段。

'single click
Private Sub getBtn_Click()
    btnUpdateHelper (1162)
End Sub

'double click
Private Sub getBtn_DblClick(cancel As Integer)
    btnUpdateHelper (1449)
End Sub

Private Sub btnUpdateHelper(Task As Variant)
    'helper method for buttons, only pass task id
    'Me.Task_ID is a textfield
    Me.Task_ID = Task
    Task_ID_AfterUpdate
End Sub

Private Sub Task_ID_AfterUpdate()
    Dim taskIdNum As String
    taskIdNum = Me.Task_ID
    'updates all fields to display the selected task
    Me.Area = DLookup("Area", "Query", "TaskID=" & taskIdNum)
    Me.Activity = DLookup("Activity", "Query", "TaskID=" & taskIdNum)
    Me.Description = DLookup("Description", "Query", "TaskID=" & taskIdNum)
    Me.Comments = DLookup("Comments", "Query", "TaskID=" & taskIdNum)
    Me.Task_Group = DLookup("[Task Group]", "Query", "TaskID=" & taskIdNum)
    Me.Mul = DLookup("Mul", "Query", "TaskID=" & taskIdNum)
    Me.Time = DLookup("Time", "Query", "TaskID=" & taskIdNum)
End Sub

【问题讨论】:

  • 这是一个很奇怪的UI设计。我可以建议使用右键单击或 Shift+单击作为替代功能吗?使用_MouseDown 事件来捕捉这些。
  • @Andre 谢谢!!如果您将其作为答案提交,我会接受它

标签: ms-access vba ms-access-2010 ms-access-2007


【解决方案1】:

ClickDblClick 事件放在按钮上是IMO 一个相当混乱的UI 设计。更好的是使用右键单击或 Shift+单击(或 Alt 或 Ctrl)来替代功能。

Click 事件不会捕获这些修饰符,只有 MouseDownMouseUp。如果将操作放在MouseUp 事件过程中,感觉最自然,例如

Private Sub cmdMultiClick_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

    Dim SelectedFunction As String

    If Button = acLeftButton Then
        If (Shift And acShiftMask) Then
            SelectedFunction = "Shift-Left click!"
        Else
            SelectedFunction = "Left click!"
        End If
    ElseIf Button = acRightButton Then
        SelectedFunction = "Right click!"
        ' Cancel the default right-click behavior (open context menu)
        DoCmd.CancelEvent
    End If

    MsgBox SelectedFunction, vbInformation

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    • 2017-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多