Ms access 更改记录时,Mouseup事件触发两次

Ms access 更改记录时,Mouseup事件触发两次,ms-access,vba,Ms Access,Vba,我有一个前端和一个主窗体frmHub,其中包含一个子窗体,它是一个连续窗体frmData。通过按住shift键并单击控件,用户可以在frmData上的文本框控件(txtType)中的值之间循环。(只有3个可能的值。) 它运行正常,但有时Mouseup事件运行两次,我不知道为什么。我必须使用鼠标而不是单击来拾取shift键 你知道我如何解决这个问题,或者对下一步有什么建议吗?谷歌搜索显示jquery和c的点击率很高,但Access的点击率却很低,这让我觉得我只是做了一些愚蠢的事情,但我还是不知道该

我有一个前端和一个主窗体frmHub,其中包含一个子窗体,它是一个连续窗体frmData。通过按住shift键并单击控件,用户可以在frmData上的文本框控件(txtType)中的值之间循环。(只有3个可能的值。)

它运行正常,但有时Mouseup事件运行两次,我不知道为什么。我必须使用鼠标而不是单击来拾取shift键

你知道我如何解决这个问题,或者对下一步有什么建议吗?谷歌搜索显示jquery和c的点击率很高,但Access的点击率却很低,这让我觉得我只是做了一些愚蠢的事情,但我还是不知道该怎么做

好的,当我输入这个时,我看到了一个模式:如果我按住shift键并单击同一条记录,它只会触发一次。如果我通过单击更改记录,它将触发两次。这里发生了什么,或者,我能做些什么

这是我的鼠标密码。(Debug_Step()函数只是将指定的文本和当前日期时间写入一个表中,我使用它在开发过程中查找瓶颈。)


编辑:我在Access 2010上;frmData使用链接的sql server表作为其记录源;frmHub使用传递查询

这里没有主题,但我喜欢您的
调试步骤
系统。我无法在Access 2010中复制此步骤。您使用哪个版本?解决方法可能是:捕获
MouseDown
事件中的
Shift
信息,将其存储在模块变量中。然后使用存储的班次状态将代码移动到
单击
事件。我使用的是Access 2010。我会试试的,谢谢@andreThank,Gary:)如果有人觉得代码有用,我很乐意发布或发布代码。
Private Sub txtType_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

Dim Marker As Long
Marker = Debug_Step("Start txtType_MouseUp")

Dim CurrentType As String
Dim NewType As String

If Shift = 1 Then

    CurrentType = Nz(Me.sType, "OFF")

    Select Case Button
    Case 1 'Left click demotes
        Select Case CurrentType
        Case "PBS"
            NewType = "PER"
        Case "PER"
            NewType = "OFF"
        Case "OFF"
            NewType = "PBS"
        Case Else
            Exit Sub
        End Select

    Case 2 'Right click promotes
        Select Case CurrentType
        Case "PBS"
            NewType = "OFF"
        Case "PER"
            NewType = "PBS"
        Case "OFF"
            NewType = "PER"
        Case Else
            Exit Sub
        End Select
    End Select

    Call Apply_sType(Me.ident, NewType)
End If

Call Debug_Step("End txtType_MouseUp", Marker)

End Sub