Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.
Obsługa komunikatu klawiaturowego
Obsłuż zdarzenie KeyPress lub KeyDown aktywnego formularza i ustaw właściwość KeyPreview 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 zdarzenie typu KeyPress, wykrywając wszystkie klawisze numeryczne i konsumując 1, 4oraz 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 także
.NET Desktop feedback