Compartilhar via


Como lidar com mensagens de entrada de teclado no formulário

O Windows Forms fornece a capacidade de lidar com mensagens de teclado no nível do formulário, antes que as mensagens atinjam um controle. Este artigo mostra como realizar essa tarefa.

Manipular uma mensagem de teclado

Manipule o evento KeyPress ou KeyDown do formulário ativo e defina a propriedade KeyPreview do formulário como true. Essa propriedade faz com que o teclado seja recebido pelo formulário antes que eles atinjam quaisquer controles no formulário. O exemplo de código a seguir manipula o KeyPress evento detectando todas as chaves numéricas e consumindo 1, 4 e 7.

// Detect all numeric characters at the form level and consume 1,4, and 7.
// Form.KeyPreview must be set to true for this event handler to be called.
void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar >= 48 && e.KeyChar <= 57)
    {
        MessageBox.Show($"Form.KeyPress: '{e.KeyChar}' pressed.");

        switch (e.KeyChar)
        {
            case (char)49:
            case (char)52:
            case (char)55:
                MessageBox.Show($"Form.KeyPress: '{e.KeyChar}' consumed.");
                e.Handled = true;
                break;
        }
    }
}
' Detect all numeric characters at the form level and consume 1,4, and 7.
' Form.KeyPreview must be set to true for this event handler to be called.
Private Sub Form1_KeyPress(sender As Object, e As KeyPressEventArgs)
    If e.KeyChar >= Chr(48) And e.KeyChar <= Chr(57) Then
        MessageBox.Show($"Form.KeyPress: '{e.KeyChar}' pressed.")

        Select Case e.KeyChar
            Case Chr(49), Chr(52), Chr(55)
                MessageBox.Show($"Form.KeyPress: '{e.KeyChar}' consumed.")
                e.Handled = True
        End Select
    End If

End Sub

Consulte também