Jak obsługiwać komunikaty wejściowe klawiatury w formularzu (Windows Forms .NET)

Formularze systemu Windows umożliwiają obsługę komunikatów klawiaturowych na poziomie formularza, zanim komunikaty dotrą do kontrolki. W tym artykule pokazano, jak wykonać to zadanie.

Ważne

Dokumentacja przewodnika dla komputerów dla platform .NET 7 i .NET 6 jest w budowie.

Obsługa komunikatu klawiaturowego

KeyPress Obsłuż zdarzenie lub KeyDown aktywnego formularza i ustaw KeyPreview właściwość formularza na true. Ta właściwość powoduje odebranie klawiatury przez formularz przed dotarciem do dowolnych kontrolek w formularzu. Poniższy przykład kodu obsługuje KeyPress zdarzenie, wykrywając wszystkie klucze liczbowe i zużywając 1, 4 i 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

Zobacz też