Нажмите 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: то же, что нажатие клавиши.
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