Dela via


Hantera tangentbordsindatameddelanden i formuläret (Windows Forms .NET)

Windows Forms ger möjlighet att hantera tangentbordsmeddelanden på formulärnivå innan meddelandena når en kontroll. Den här artikeln visar hur du utför den här uppgiften.

Hantera ett tangentbordsmeddelande

Hantera KeyPress- eller KeyDown händelsen i det aktiva formuläret och ange KeyPreview-egenskapen för formuläret till true. Den här egenskapen gör att tangentbordet tas emot av formuläret innan de når några kontroller i formuläret. Följande kodexempel hanterar händelsen KeyPress genom att identifiera alla nummernycklar och använda 1, 4och 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

Se även