Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
KeyPress Event

Control::KeyPress Event

Occurs when a character. space or backspace key is pressed while the control has focus.

Namespace:  System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)

 event KeyPressEventHandler^ KeyPress {
	void add (KeyPressEventHandler^ value);
	void remove (KeyPressEventHandler^ value);

Key events occur in the following order:

  1. KeyDown

  2. KeyPress

  3. KeyUp

The KeyPress event is not raised by non-character keys other than space and backspace; however, the non-character keys do raise the KeyDown and KeyUp events.

Use the KeyChar property to sample keystrokes at run time and to consume or modify a subset of common keystrokes.

To handle keyboard events only at the form level and not enable other controls to receive keyboard events, set the KeyPressEventArgs::Handled property in your form's KeyPress event-handling method to true.

For more information about handling events, see Handling and Raising Events.

The following code example uses the KeyPress event to prevent characters from entering the control.

   // Boolean flag used to determine when a character other than a number is entered. 
   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;
      //If shift key was pressed, it's not a number. 
      if (Control::ModifierKeys == Keys::Shift) {
         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;

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0, 1.1

.NET Framework Client Profile

Supported in: 4, 3.5 SP1
© 2015 Microsoft