Skip to content
Merged
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ The common keyboard events that your control can handle are <xref:System.Windows

|Event Name|Method to Override|Description of Event|
|----------------|------------------------|--------------------------|
|`KeyDown`|`void OnKeyDown(KeyEventArgs)`|Raised only when a key is initially pressed.|
|`KeyDown`|`void OnKeyDown(KeyEventArgs)`|Raised when a key is pressed. If a key is held down, a <xref:System.Windows.Forms.Control.KeyDown> event is raised at the repeat rate defined by the operating system.|
|`KeyPress`|`void OnKeyPress`<br /><br /> `(KeyPressEventArgs)`|Raised every time a key is pressed. If a key is held down, a <xref:System.Windows.Forms.Control.KeyPress> event is raised at the repeat rate defined by the operating system.|
|`KeyUp`|`void OnKeyUp(KeyEventArgs)`|Raised when a key is released.|

Expand Down
122 changes: 75 additions & 47 deletions dotnet-desktop-guide/winforms/input-keyboard/events.md
Original file line number Diff line number Diff line change
@@ -1,47 +1,75 @@
---
title: "Using keyboard events"
description: Overview of using keyboard events to handle keyboard input. This article provides a list of keyboard-related events and when to use them.
ms.date: 04/02/2025
ms.service: dotnet-desktop
ms.update-cycle: 365-days
ms.topic: overview
dev_langs:
- "csharp"
- "vb"
helpviewer_keywords:
- "KeyPress event [Windows Forms]"
- "keyboards [Windows Forms], keyboard events"
- "KeyUp event"
- "KeyDown event"
- "keyboard events"
- "events [Windows Forms], keyboard"
---
# Using keyboard events

Most Windows Forms programs process keyboard input by handling the keyboard events. This article provides an overview of the keyboard events, including details on when to use each event and the data that is supplied for each event. For more information about events in general, see [Events overview](../forms/events.md).

## Keyboard events

Windows Forms provides two events that occur when a user presses a keyboard key and one event when a user releases a keyboard key:

- The <xref:System.Windows.Forms.Control.KeyDown> event occurs once.
- The <xref:System.Windows.Forms.Control.KeyPress> event, which can occur multiple times when a user holds down the same key.
- The <xref:System.Windows.Forms.Control.KeyUp> event occurs once when a user releases a key.

When a user presses a key, Windows Forms determines which event to raise based on whether the keyboard message specifies a character key or a physical key. For more information about character and physical keys, see [Keyboard overview, keyboard events](overview.md#keyboard-events).

The following table describes the three keyboard events.

|Keyboard event|Description|Results|
|--------------------|-----------------|-------------|
|<xref:System.Windows.Forms.Control.KeyDown>|This event is raised when a user presses a physical key.|The handler for <xref:System.Windows.Forms.Control.KeyDown> receives:<br /><br /> <ul><li>A <xref:System.Windows.Forms.KeyEventArgs> parameter, which provides the <xref:System.Windows.Forms.KeyEventArgs.KeyCode%2A> property (which specifies a physical keyboard button).</li><li>The <xref:System.Windows.Forms.KeyEventArgs.Modifiers%2A> property (SHIFT, CTRL, or ALT).</li><li>The <xref:System.Windows.Forms.KeyEventArgs.KeyData%2A> property (which combines the key code and modifier). The <xref:System.Windows.Forms.KeyEventArgs> parameter also provides:<br /><br /> <ul><li>The <xref:System.Windows.Forms.KeyEventArgs.Handled%2A> property, which can be set to prevent the underlying control from receiving the key.</li><li>The <xref:System.Windows.Forms.KeyEventArgs.SuppressKeyPress%2A> property, which can be used to suppress the <xref:System.Windows.Forms.Control.KeyPress> and <xref:System.Windows.Forms.Control.KeyUp> events for that keystroke.</li></ul></li></ul>|
|<xref:System.Windows.Forms.Control.KeyPress>|This event is raised when the key or keys pressed result in a character. For example, a user presses SHIFT and the lowercase "a" keys, which result in a capital letter "A" character.|<xref:System.Windows.Forms.Control.KeyPress> is raised after <xref:System.Windows.Forms.Control.KeyDown>.<br /><br /> <ul><li>The handler for <xref:System.Windows.Forms.Control.KeyPress> receives:</li><li>A <xref:System.Windows.Forms.KeyPressEventArgs> parameter, which contains the character code of the key that was pressed. This character code is unique for every combination of a character key and a modifier key.<br /><br /> For example, the "A" key generates:<br /><br /> <ul><li>The character code 65, if it's pressed with the <kbd>Shift</kbd> key</li><li>Or <kbd>Caps lock</kbd> is on, 97 if it's pressed by itself,</li><li>And 1, if it's pressed with the <kbd>Ctrl</kbd> key.</li></ul></li></ul>|
|<xref:System.Windows.Forms.Control.KeyUp>|This event is raised when a user releases a physical key.|The handler for <xref:System.Windows.Forms.Control.KeyUp> receives:<br /><br /> <ul><li>A <xref:System.Windows.Forms.KeyEventArgs> parameter:<br /><br /> <ul><li>Which provides the <xref:System.Windows.Forms.KeyEventArgs.KeyCode%2A> property (which specifies a physical keyboard button).</li><li>The <xref:System.Windows.Forms.KeyEventArgs.Modifiers%2A> property (SHIFT, CTRL, or ALT).</li><li>The <xref:System.Globalization.SortKey.KeyData%2A> property (which combines the key code and modifier).</li></ul></li></ul>|

## See also

- [Overview of using the keyboard](overview.md)
- [How to modify keyboard key events](how-to-change-key-press.md)
- [How to Check for modifier key presses](how-to-check-modifier-key.md)
- [How to simulate keyboard events](how-to-simulate-events.md)
- [How to handle keyboard input messages in the form](how-to-handle-forms.md)
---
title: "Using keyboard events"
description: Overview of using keyboard events to handle keyboard input. This article provides a list of keyboard-related events and when to use them.
ms.date: 04/20/2026
ms.service: dotnet-desktop
ms.update-cycle: 365-days
ms.topic: overview
ai-usage: ai-assisted
dev_langs:
- "csharp"
- "vb"
helpviewer_keywords:
- "KeyPress event [Windows Forms]"
- "keyboards [Windows Forms], keyboard events"
- "KeyUp event"
- "KeyDown event"
- "keyboard events"
- "events [Windows Forms], keyboard"
---
# Using keyboard events

Most Windows Forms programs process keyboard input by handling the keyboard events. This article provides an overview of the keyboard events, including details on when to use each event and the data that each event provides. For more information about events in general, see [Events overview](../forms/events.md).

## Keyboard events

Windows Forms raises the following events when a user presses and releases a keyboard key:

- <xref:System.Windows.Forms.Control.KeyDown>
- <xref:System.Windows.Forms.Control.KeyPress>
- <xref:System.Windows.Forms.Control.KeyUp>

When a user presses a key, Windows Forms determines which event to raise based on whether the keyboard message specifies a character key or a physical key. For more information about character and physical keys, see [Keyboard overview, keyboard events](overview.md#keyboard-events).

## KeyDown event

The <xref:System.Windows.Forms.Control.KeyDown> event is raised when a user presses a physical key. If the key is held down, this event repeats at the OS keyboard repeat rate.

The handler for <xref:System.Windows.Forms.Control.KeyDown> receives a <xref:System.Windows.Forms.KeyEventArgs> parameter that provides:

- The <xref:System.Windows.Forms.KeyEventArgs.KeyCode> property, which specifies a physical keyboard button.
- The <xref:System.Windows.Forms.KeyEventArgs.Modifiers> property (`Shift`, `Ctrl`, or `Alt`).
- The <xref:System.Windows.Forms.KeyEventArgs.KeyData> property, which combines the key code and modifier.
- The <xref:System.Windows.Forms.KeyEventArgs.Handled> property, which prevents the underlying control from receiving the key when set.
- The <xref:System.Windows.Forms.KeyEventArgs.SuppressKeyPress> property, which suppresses the <xref:System.Windows.Forms.Control.KeyPress> and <xref:System.Windows.Forms.Control.KeyUp> events for that keystroke.

## KeyPress event

The <xref:System.Windows.Forms.Control.KeyPress> event is raised when the key or keys pressed result in a character. For example, pressing <kbd>Shift</kbd> and the lowercase "a" key produces a capital letter "A" character. <xref:System.Windows.Forms.Control.KeyPress> is raised after <xref:System.Windows.Forms.Control.KeyDown> and repeats at the OS keyboard repeat rate while the key is held.

The handler for <xref:System.Windows.Forms.Control.KeyPress> receives a <xref:System.Windows.Forms.KeyPressEventArgs> parameter that contains the character code of the key pressed. This character code is unique for every combination of a character key and a modifier key.

For example, the "A" key generates:

- The character code 65, if it's pressed with the <kbd>Shift</kbd> key.
- The character code 65, if <kbd>Caps Lock</kbd> is on.
- The character code 97, if it's pressed by itself.
- The character code 1, if it's pressed with the <kbd>Ctrl</kbd> key.

## KeyUp event

The <xref:System.Windows.Forms.Control.KeyUp> event is raised once when a user releases a physical key.

The handler for <xref:System.Windows.Forms.Control.KeyUp> receives a <xref:System.Windows.Forms.KeyEventArgs> parameter that provides:

- The <xref:System.Windows.Forms.KeyEventArgs.KeyCode> property, which specifies a physical keyboard button.
- The <xref:System.Windows.Forms.KeyEventArgs.Modifiers> property (`Shift`, `Ctrl`, or `Alt`).
- The <xref:System.Windows.Forms.KeyEventArgs.KeyData> property, which combines the key code and modifier.

## See also

- [Overview of using the keyboard](overview.md)
- [How to modify keyboard key events](how-to-change-key-press.md)
- [How to check for modifier key presses](how-to-check-modifier-key.md)
- [How to simulate keyboard events](how-to-simulate-events.md)
- [How to handle keyboard input messages in the form](how-to-handle-forms.md)
7 changes: 3 additions & 4 deletions dotnet-desktop-guide/winforms/input-keyboard/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,9 @@ Windows Forms identifies keyboard input as virtual-key codes that are represente

As listed previously, there are three keyboard related events that can occur on a control. The following sequence shows the general order of the events:

01. The user pushes the <kbd>A</kbd> key, the key is preprocessed, dispatched, and a <xref:System.Windows.Forms.Control.KeyDown> event occurs.
01. The user holds the <kbd>A</kbd> key, the key is preprocessed, dispatched, and a <xref:System.Windows.Forms.Control.KeyPress> event occurs.
This event occurs multiple times as the user holds a key.
01. The user releases the <kbd>A</kbd> key, the key is preprocessed, dispatched and a <xref:System.Windows.Forms.Control.KeyUp> event occurs.
01. The user pushes the <kbd>A</kbd> key, the key is preprocessed, dispatched, and a <xref:System.Windows.Forms.Control.KeyDown> event occurs. If the key produces a character, a <xref:System.Windows.Forms.Control.KeyPress> event also occurs.
01. The user holds the <kbd>A</kbd> key—both <xref:System.Windows.Forms.Control.KeyDown> and <xref:System.Windows.Forms.Control.KeyPress> events occur repeatedly at the repeat rate defined by the operating system.
01. The user releases the <kbd>A</kbd> key, the key is preprocessed, dispatched, and a <xref:System.Windows.Forms.Control.KeyUp> event occurs.

## Preprocessing keys

Expand Down
Loading