Нажмите enter в текстовом поле и выполните функцию кнопки в VBA



У меня есть форма входа в мою базу данных, выполненная в Access 2010 и использующая код VBA. Я хочу иметь возможность нажать Enter на txtboxPassword и автоматически выполнить событие btnLogin_Click. Я попробовал это:



Private Sub txtboxPassword_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 Then
btnLogin_Click
End If
End Sub


То, что я получаю,-это самодельная ошибка, говорящая, что пароль неверен. Если я отлаживаю, я вижу, что на самом деле txtPassword - это null, но я просто набрал текст в нем!



Однако, если я нажму кнопку входа с помощью мыши, это работает идеально. Почему vba так себя ведет? Как я могу сделать это, чтобы сделать это? работа?



Примечание я также попробовал с:




  • нажатие клавиши: после нажатия клавиши Enter фокус переходит на btnLogin (возможно, также потому, что порядок табуляции такой), но событие btnLogin_Click не выполняется.

  • KeyUp: то же, что нажатие клавиши.

1192   5  

5 ответов:

Кнопки в Access имеют свойство Default (на странице свойств" другое"). Если вы установите его на "Да" форма вызывает его автоматически, когда вы нажимаете Enter. Нет необходимости в обработке ключевых событий.

Существует также свойство Cancel. Если для кнопки задано значение "Yes", форма активирует ее автоматически, когда пользователь вводит клавишу Esc. Очень практично для кнопок "отмена".

Чтобы активировать KeyCode, вам нужно установить свойство Key Preview на форму YES (оно будет внизу)

If KeyCode = vbKeyReturn Then
    Your_fuction_here
End If

Не могу точно воспроизвести вашу проблему, но некоторое время назад у меня был похожий вопрос, и я решил его, добавив:

Private Sub txtboxPassword_KeyDown(KeyCode As Integer, Shift As Integer)
  If KeyCode = 13 Then
     btnLogin_Click
     KeyCode.Value = 0
  End If
End Sub

На кнопке, которую вы хотите выполнить, перейдите в свойства "другое" и установите значение "по умолчанию" в значение "Да". Затем, когда вы нажмете на enter, когда в текстовом поле будет действовать кнопка.

Нажатие клавиши , а не KeyDown работает для меня, и вызов _click sub позволяет избежать отправки триггеров, которые могут вызвать другие события.

Private Sub txtboxPassword_KeyPress(KeyAscii As Integer)
    If KeyAscii = 13 Then
         Call btnLogin_Click
    End If
End Sub

Comments

    Ничего не найдено.