Моя форма не регистрирует нажатия клавиш Enter

Пишу образовательную программу. У меня есть кнопка, которую я хочу "щелкнуть", когда пользователь нажимает клавишу "Ввод". Я установил для свойства кнопки accept формы значение true, а для свойства KeyPreview также установлено значение true. Я попытался создать настраиваемую подпрограмму для репликации функциональности AcceptButton, это тоже не работает, подпрограмма запускается на всех клавишах, кроме нажатия клавиши ввода.

    Private Sub TextBoxAnswer_KeyDown(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) Handles TextBoxAnswer.KeyDown
        If e.KeyCode = System.Windows.Forms.Keys.Enter Then
            CheckQ()
        End If
     End Sub

Я провел последние 3 дня в поисках ответа и перепробовал в Google все, что смог найти. Я также только что попытался установить для свойства textbox MultiLine значение true, а клавиша ввода даже не создает новую строку, просто чтобы уточнить, я снова установил для свойства Multiline значение false, как и должно быть.


person user2756856    schedule 07.09.2013    source источник


Ответы (1)


Свойство AcceptButton должно быть установлено = на кнопку, которую вы хотите «щелкнуть» при нажатии клавиши ввода, а не на логическое значение. Me.AcceptButton = buttonSubmit

Вы добавили обработчик для события Keydown формы вместе с установкой свойства KeyPreview?

Private Sub form1_KeyDown(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) Handles form1.KeyDown
    If e.KeyCode = System.Windows.Forms.Keys.Enter Then
        CheckQ()
        e.Handled = true
    End If
 End Sub

Ваш код, который вы написали для события нажатия клавиши текстового поля, также должен работать. Я попробовал это в тестовом приложении, и никаких проблем не возникло. Попадаете ли вы в точку останова, если поместите ее при вызове метода CheckQ ()?

Любой из этих методов должен выполнить то, что вы пытаетесь сделать.

person LeftyCoder    schedule 07.09.2013
comment
Привет, извините за ошибку при вводе, кнопка «Принять» настроена на кнопку с именем ButtonCheck, спасибо за дополнительную помощь. Я не попал в точку останова, когда сделал то, что вы описываете, и опубликованный вами код также не работал, однако большое спасибо. - person user2756856; 07.09.2013
comment
Я также проверил, что при нажатии клавиши ввода никакие точки останова не попадают в подпрограмму. - person user2756856; 07.09.2013
comment
Я создал тестовое приложение и смог поймать клавишу ввода, используя свойство AcceptButton, событие KeyDown в форме после установки KeyPreview = true и использования события KeyDown в текстовом поле. Можете ли вы опубликовать больше своего кода? - person LeftyCoder; 07.09.2013
comment
Общее решение составляет чуть менее 10 000 строк, какой бит вам нужен - person user2756856; 07.09.2013
comment
Я хотел бы просто увидеть код в той форме, которая имеет отношение к вашему вопросу. Я бы порекомендовал вам попробовать создать тестовое приложение и посмотреть, сможете ли вы заставить его там работать. Если вы затем можете сравнить свое тестовое приложение с другим приложением и найти различия, которые могут повлиять на его способность улавливать нажатие клавиши ввода. - person LeftyCoder; 08.09.2013
comment
Я создал тестовую программу, и я заставил ее работать, и я сравнил то, что я видел, может повлиять на это, но я не видел ничего очевидного. Не могли бы вы дать мне еще какие-нибудь предложения по поводу вещей, которые могут повлиять на это, чтобы я исследовал их, спасибо. - person user2756856; 08.09.2013
comment
Я только что закомментировал весь код в форме и запустил приложение, а клавиша ввода все еще не зарегистрирована! - person user2756856; 08.09.2013
comment
@ user2756856 - Срабатывает ли событие нажатия кнопки, когда вы действительно нажимаете кнопку с помощью мыши? Правильно ли подключено событие нажатия кнопки? - person Chris Dunaway; 09.09.2013
comment
Да, код в подпрограмме CheckQ() запускается должным образом при нажатии кнопки - person user2756856; 09.09.2013
comment
После создания нового окна в рамках того же проекта клавиша ввода также не была зарегистрирована в новой форме. Итак, проблема затрагивает весь проект. - person user2756856; 09.09.2013
comment
Я только что создал подпрограмму, которая имеет Handles в событии KeyDown всех элементов управления в форме, и когда нажата клавиша ввода, ничто в форме не получает нажатие клавиши ввода, поэтому нажатие клавиши не `` украдено '' из что-то в форме. - person user2756856; 09.09.2013