Изменение цвета фона кнопки при нажатии Enter на клавиатуре

 Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
        If e.KeyCode = Keys.Enter Then
            Button1.BackColor = Color.Aqua
        End If
    End Sub

Я хочу изменить BackColor кнопки, если нажата клавиша ввода, но она ничего не делает, когда я нажимаю клавишу ввода. Для формы KeyPreview установлено значение true. Если клавиша Enter заменена другой клавишей, код выполняется


person Gabriel08    schedule 12.11.2020    source источник
comment
Во-первых, зачем помечать этот вопрос как VBA? Пожалуйста, прочтите описание тега, прежде чем добавлять его в свой вопрос.   -  person jmcilhinney    schedule 12.11.2020
comment
Что касается вопроса, вы проверяли, выполняется ли этот код вообще? Вы должны были сделать это перед публикацией здесь и включить эту информацию в свой вопрос. Код не может что-то сделать, если он не выполняется. Если вы не установили для свойства KeyPreview значение True в форме, тогда она не будет вызывать события клавиатуры, когда дочерний элемент управления имеет фокус.   -  person jmcilhinney    schedule 12.11.2020
comment
@jmcilhinney код выполняется, когда клавиша ввода заменяется другими клавишами. Для свойства KeyPreview установлено значение True   -  person Gabriel08    schedule 12.11.2020
comment
Я только что проверил, и форма вызывает событие KeyDown, если TextBox или ListBox имеет фокус, но не Button. Предположительно, это связано с тем, что Enter имеет особое значение для Button, то есть вызывает щелчок. Вы видите такое же поведение? Если это проблема, вам, возможно, придется обрабатывать событие PreviewKeyDown для Button отдельно.   -  person jmcilhinney    schedule 12.11.2020


Ответы (1)


Вы можете переопределить ProcessCmdKey вот так:

Public Class Form1

    Protected Overrides Function ProcessCmdKey(ByRef msg As Message, keyData As Keys) As Boolean
        If keyData = Keys.Enter Then
            Button1.BackColor = Color.Aqua
        End If
        Return MyBase.ProcessCmdKey(msg, keyData)
    End Function

End Class
person Idle_Mind    schedule 12.11.2020