我在ms-access中的表单上有一个按钮,其中我同时填写了"单击时"和"Dbl单击时"事件。 我遇到了单击事件起作用的问题,但双击不会,除非在第二次单击时,我一直按住它并在释放它之前将鼠标拖离按钮。 此按钮的作用是根据 2 次不同的单击用某些文本填充文本框。我如何解决此双击问题? 按钮的代码如下。 请注意,Task_ID_AfterUpdate(( 还通过在查询中查找文本字段来根据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
将Click
和DblClick
事件放在按钮上是IMO一个相当混乱的UI设计。最好是使用右键单击或 Shift+单击(或 Alt 或 Ctrl(来执行备用功能。
Click
事件不会捕获这些修饰符,只会捕获MouseDown
和MouseUp
。如果将操作放在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