У меня есть элемент управления 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
и сохранял поведение Access по умолчанию, добавляя новую строку при нажатии Ctrl + Enter
.
Вам нужно проверить аргумент 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
Попробуйте проверить код ключа:
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
Я пытался, но это не сработало. Я нашел ответ @Lee Mac в качестве решения.
Вам понадобится проверка условного выражения, которая:
Код может выглядеть примерно так:
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
Спасибо за простой совет. Пожалуйста, внесите небольшое исправление в свой код, заменив
vbCtrlMask
наacCtrlMask
. Тогда это работает нормально.