Zpracování zpráv pro zadávání klávesnice ve formuláři (model Windows Forms .NET)

model Windows Forms poskytuje možnost zpracovávat zprávy klávesnice na úrovni formuláře, než se zprávy dostanou do ovládacího prvku. Tento článek ukazuje, jak tuto úlohu provést.

Důležité

Dokumentace k desktopové příručce pro .NET 7 a .NET 6 se právě připravuje.

Zpracování zprávy klávesnice

Zpracujte KeyPress nebo KeyDown událost aktivního formuláře a nastavte KeyPreview vlastnost formuláře na true. Tato vlastnost způsobí, že formulář obdrží klávesnici předtím, než se dostanou k jakýmkoli ovládacím prvkům ve formuláři. Následující příklad kódu zpracovává KeyPress událost zjištěním všech číselných klíčů a spotřebou 1, 4 a 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

Viz také