Control.OnKeyPress Method
Raises the KeyPress event.
[Visual Basic] Protected Overridable Sub OnKeyPress( _ ByVal e As KeyPressEventArgs _ ) [C#] protected virtual void OnKeyPress( KeyPressEventArgs e ); [C++] protected: virtual void OnKeyPress( KeyPressEventArgs* e ); [JScript] protected function OnKeyPress( e : KeyPressEventArgs );
Parameters
- e
- A KeyPressEventArgs that contains the event data.
Remarks
Raising an event invokes the event handler through a delegate. For more information, see Raising an Event.
The OnKeyPress method also allows derived classes to handle the event without attaching a delegate. This is the preferred technique for handling the event in a derived class.
Notes to Inheritors: When overriding OnKeyPress in a derived class, be sure to call the base class's OnKeyPress method so that registered delegates receive the event.
Example
[Visual Basic] ' Boolean flag used to determine when a character other than a number is entered. Private nonNumberEntered As Boolean = False ' Handle the KeyDown event to determine the type of character entered into the control. Private Sub textBox1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) _ Handles textBox1.KeyDown ' Initialize the flag to false. nonNumberEntered = False ' Determine whether the keystroke is a number from the top of the keyboard. If e.KeyCode < Keys.D0 OrElse e.KeyCode > Keys.D9 Then ' Determine whether the keystroke is a number from the keypad. If e.KeyCode < Keys.NumPad0 OrElse e.KeyCode > Keys.NumPad9 Then ' Determine whether the keystroke is a backspace. If e.KeyCode <> Keys.Back Then ' A non-numerical keystroke was pressed. ' Set the flag to true and evaluate in KeyPress event. nonNumberEntered = True End If End If End If End Sub 'textBox1_KeyDown ' This event occurs after the KeyDown event and can be used ' to prevent characters from entering the control. Private Sub textBox1_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) _ Handles textBox1.KeyPress ' Check for the flag being set in the KeyDown event. If nonNumberEntered = True Then ' Stop the character from being entered into the control since it is non-numerical. e.Handled = True End If End Sub 'textBox1_KeyPress End Class 'Form1 [C#] // Boolean flag used to determine when a character other than a number is entered. private bool nonNumberEntered = false; // Handle the KeyDown event to determine the type of character entered into the control. private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) { // Initialize the flag to false. nonNumberEntered = false; // Determine whether the keystroke is a number from the top of the keyboard. if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9) { // Determine whether the keystroke is a number from the keypad. if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9) { // Determine whether the keystroke is a backspace. if(e.KeyCode != Keys.Back) { // A non-numerical keystroke was pressed. // Set the flag to true and evaluate in KeyPress event. nonNumberEntered = true; } } } } // This event occurs after the KeyDown event and can be used to prevent // characters from entering the control. private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) { // Check for the flag being set in the KeyDown event. if (nonNumberEntered == true) { // Stop the character from being entered into the control since it is non-numerical. e.Handled = true; } } [C++] // Boolean flag used to determine when a character other than a number is entered. private: bool nonNumberEntered; // Handle the KeyDown event to determine the type of character entered into the control. void textBox1_KeyDown(Object* /*sender*/, System::Windows::Forms::KeyEventArgs* e) { // Initialize the flag to false. nonNumberEntered = false; // Determine whether the keystroke is a number from the top of the keyboard. if (e->KeyCode < Keys::D0 || e->KeyCode > Keys::D9) { // Determine whether the keystroke is a number from the keypad. if (e->KeyCode < Keys::NumPad0 || e->KeyCode > Keys::NumPad9) { // Determine whether the keystroke is a backspace. if(e->KeyCode != Keys::Back) { // A non-numerical keystroke was pressed. // Set the flag to true and evaluate in KeyPress event. nonNumberEntered = true; } } } } // This event occurs after the KeyDown event and can be used to prevent // characters from entering the control. void textBox1_KeyPress(Object* /*sender*/, System::Windows::Forms::KeyPressEventArgs* e) { // Check for the flag being set in the KeyDown event. if (nonNumberEntered == true) { // Stop the character from being entered into the control since it is non-numerical. e->Handled = true; } }
[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button
in the upper-left corner of the page.
Requirements
Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, .NET Compact Framework
See Also
Control Class | Control Members | System.Windows.Forms Namespace | KeyPress