Как перехватить vbKeyReturn только в VBA Access - PullRequest
2 голосов
/ 10 апреля 2019

У меня есть textbox элемент управления в subForm, который является singleForm.Однако, когда я нажимаю клавишу enter, она добавляет new record, а предыдущая record скрывается.У меня form property уже установлено current record.

Я использовал код ниже, чтобы перехватить ключ enter, который работает.

Private Sub txt_1_KeyDown (KeyCode As Intger, Shift as Integer)

Select case KeyCode
    Case vbKeyCode
        KeyCode = 0
        Me.parent.Combo.SetFocus
End Select

End Sub

Однако теперь я не могу добавить new line, используя Ctrl + Enter в textbox, так как код срабатывает, как только я нажимаю enter.Может кто-нибудь помочь, как изменить код выше, чтобы он только перехватывал клавишу enter и сохранял поведение доступа по умолчанию добавления новой строки при нажатии Ctrl + Enter.

Ответы [ 3 ]

3 голосов
/ 10 апреля 2019

Вам понадобится проверка условного выражения:

  • Нажата клавиша Ввод (символ ASCII 13)
  • Аргумент Shift событияобработчик равен нулю, что означает, что Ctrl , Shift , Alt были нажаты вместе с клавишей Enter .

Код может выглядеть примерно так:

Private Sub txt_1_KeyDown(KeyCode As Intger, Shift As Integer)
    If KeyCode = 13 And Shift = 0 Then
        KeyCode = 0
        Me.Parent.Combo.SetFocus
    End If
End Sub
2 голосов
/ 10 апреля 2019

Вам необходимо проверить аргумент Shift следующим образом:

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
   If KeyCode = vbKeyReturn Then
      If Not Shift = acCtrlMask Then
         MsgBox "Enter"
         KeyCode = 0
         Me.parent.Combo.SetFocus
      End If
   End If
End Sub
0 голосов
/ 10 апреля 2019

Попробуйте проверить код ключа:

Private Sub txt_1_KeyDown(KeyCode As Intger, Shift as Integer)

    Select Case KeyCode
        Case vbKeyEnter
            KeyCode = 0
            Me.parent.Combo.SetFocus
        Case Else
            ' Leave key code as is.
    End Select

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...