Keys Enum

Definition

Specifies key codes and modifiers.

This enumeration supports a bitwise combination of its member values.

public enum class Keys
[System.ComponentModel.TypeConverter(typeof(System.Windows.Forms.KeysConverter))]
[System.Flags]
[System.Runtime.InteropServices.ComVisible(true)]
public enum Keys
[System.ComponentModel.TypeConverter(typeof(System.Windows.Forms.KeysConverter))]
[System.Flags]
public enum Keys
[<System.ComponentModel.TypeConverter(typeof(System.Windows.Forms.KeysConverter))>]
[<System.Flags>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type Keys = 
[<System.ComponentModel.TypeConverter(typeof(System.Windows.Forms.KeysConverter))>]
[<System.Flags>]
type Keys = 
Public Enum Keys
Inheritance
Attributes

Fields

A 65

The A key.

Add 107

The add key.

Alt 262144

The ALT modifier key.

Apps 93

The application key (Microsoft Natural Keyboard).

Attn 246

The ATTN key.

B 66

The B key.

Back 8

The BACKSPACE key.

BrowserBack 166

The browser back key.

BrowserFavorites 171

The browser favorites key.

BrowserForward 167

The browser forward key.

BrowserHome 172

The browser home key.

BrowserRefresh 168

The browser refresh key.

BrowserSearch 170

The browser search key.

BrowserStop 169

The browser stop key.

C 67

The C key.

Cancel 3

The CANCEL key.

Capital 20

The CAPS LOCK key.

CapsLock 20

The CAPS LOCK key.

Clear 12

The CLEAR key.

Control 131072

The CTRL modifier key.

ControlKey 17

The CTRL key.

Crsel 247

The CRSEL key.

D 68

The D key.

D0 48

The 0 key.

D1 49

The 1 key.

D2 50

The 2 key.

D3 51

The 3 key.

D4 52

The 4 key.

D5 53

The 5 key.

D6 54

The 6 key.

D7 55

The 7 key.

D8 56

The 8 key.

D9 57

The 9 key.

Decimal 110

The decimal key.

Delete 46

The DEL key.

Divide 111

The divide key.

Down 40

The DOWN ARROW key.

E 69

The E key.

End 35

The END key.

Enter 13

The ENTER key.

EraseEof 249

The ERASE EOF key.

Escape 27

The ESC key.

Execute 43

The EXECUTE key.

Exsel 248

The EXSEL key.

F 70

The F key.

F1 112

The F1 key.

F10 121

The F10 key.

F11 122

The F11 key.

F12 123

The F12 key.

F13 124

The F13 key.

F14 125

The F14 key.

F15 126

The F15 key.

F16 127

The F16 key.

F17 128

The F17 key.

F18 129

The F18 key.

F19 130

The F19 key.

F2 113

The F2 key.

F20 131

The F20 key.

F21 132

The F21 key.

F22 133

The F22 key.

F23 134

The F23 key.

F24 135

The F24 key.

F3 114

The F3 key.

F4 115

The F4 key.

F5 116

The F5 key.

F6 117

The F6 key.

F7 118

The F7 key.

F8 119

The F8 key.

F9 120

The F9 key.

FinalMode 24

The IME final mode key.

G 71

The G key.

H 72

The H key.

HanguelMode 21

The IME Hanguel mode key. (maintained for compatibility; use HangulMode)

HangulMode 21

The IME Hangul mode key.

HanjaMode 25

The IME Hanja mode key.

Help 47

The HELP key.

Home 36

The HOME key.

I 73

The I key.

IMEAccept 30

The IME accept key, replaces IMEAceept.

IMEAceept 30

The IME accept key. Obsolete, use IMEAccept instead.

IMEConvert 28

The IME convert key.

IMEModeChange 31

The IME mode change key.

IMENonconvert 29

The IME nonconvert key.

Insert 45

The INS key.

J 74

The J key.

JunjaMode 23

The IME Junja mode key.

K 75

The K key.

KanaMode 21

The IME Kana mode key.

KanjiMode 25

The IME Kanji mode key.

KeyCode 65535

The bitmask to extract a key code from a key value.

L 76

The L key.

LaunchApplication1 182

The start application one key.

LaunchApplication2 183

The start application two key.

LaunchMail 180

The launch mail key.

LButton 1

The left mouse button.

LControlKey 162

The left CTRL key.

Left 37

The LEFT ARROW key.

LineFeed 10

The LINEFEED key.

LMenu 164

The left ALT key.

LShiftKey 160

The left SHIFT key.

LWin 91

The left Windows logo key (Microsoft Natural Keyboard).

M 77

The M key.

MButton 4

The middle mouse button (three-button mouse).

MediaNextTrack 176

The media next track key.

MediaPlayPause 179

The media play pause key.

MediaPreviousTrack 177

The media previous track key.

MediaStop 178

The media Stop key.

Menu 18

The ALT key.

Modifiers -65536

The bitmask to extract modifiers from a key value.

Multiply 106

The multiply key.

N 78

The N key.

Next 34

The PAGE DOWN key.

NoName 252

A constant reserved for future use.

None 0

No key pressed.

NumLock 144

The NUM LOCK key.

NumPad0 96

The 0 key on the numeric keypad.

NumPad1 97

The 1 key on the numeric keypad.

NumPad2 98

The 2 key on the numeric keypad.

NumPad3 99

The 3 key on the numeric keypad.

NumPad4 100

The 4 key on the numeric keypad.

NumPad5 101

The 5 key on the numeric keypad.

NumPad6 102

The 6 key on the numeric keypad.

NumPad7 103

The 7 key on the numeric keypad.

NumPad8 104

The 8 key on the numeric keypad.

NumPad9 105

The 9 key on the numeric keypad.

O 79

The O key.

Oem1 186

The OEM 1 key.

Oem102 226

The OEM 102 key.

Oem2 191

The OEM 2 key.

Oem3 192

The OEM 3 key.

Oem4 219

The OEM 4 key.

Oem5 220

The OEM 5 key.

Oem6 221

The OEM 6 key.

Oem7 222

The OEM 7 key.

Oem8 223

The OEM 8 key.

OemBackslash 226

The OEM angle bracket or backslash key on the RT 102 key keyboard.

OemClear 254

The CLEAR key.

OemCloseBrackets 221

The OEM close bracket key on a US standard keyboard.

Oemcomma 188

The OEM comma key on any country/region keyboard.

OemMinus 189

The OEM minus key on any country/region keyboard.

OemOpenBrackets 219

The OEM open bracket key on a US standard keyboard.

OemPeriod 190

The OEM period key on any country/region keyboard.

OemPipe 220

The OEM pipe key on a US standard keyboard.

Oemplus 187

The OEM plus key on any country/region keyboard.

OemQuestion 191

The OEM question mark key on a US standard keyboard.

OemQuotes 222

The OEM singled/double quote key on a US standard keyboard.

OemSemicolon 186

The OEM Semicolon key on a US standard keyboard.

Oemtilde 192

The OEM tilde key on a US standard keyboard.

P 80

The P key.

Pa1 253

The PA1 key.

Packet 231

Used to pass Unicode characters as if they were keystrokes. The Packet key value is the low word of a 32-bit virtual-key value used for non-keyboard input methods.

PageDown 34

The PAGE DOWN key.

PageUp 33

The PAGE UP key.

Pause 19

The PAUSE key.

Play 250

The PLAY key.

Print 42

The PRINT key.

PrintScreen 44

The PRINT SCREEN key.

Prior 33

The PAGE UP key.

ProcessKey 229

The PROCESS KEY key.

Q 81

The Q key.

R 82

The R key.

RButton 2

The right mouse button.

RControlKey 163

The right CTRL key.

Return 13

The RETURN key.

Right 39

The RIGHT ARROW key.

RMenu 165

The right ALT key.

RShiftKey 161

The right SHIFT key.

RWin 92

The right Windows logo key (Microsoft Natural Keyboard).

S 83

The S key.

Scroll 145

The SCROLL LOCK key.

Select 41

The SELECT key.

SelectMedia 181

The select media key.

Separator 108

The separator key.

Shift 65536

The SHIFT modifier key.

ShiftKey 16

The SHIFT key.

Sleep 95

The computer sleep key.

Snapshot 44

The PRINT SCREEN key.

Space 32

The SPACEBAR key.

Subtract 109

The subtract key.

T 84

The T key.

Tab 9

The TAB key.

U 85

The U key.

Up 38

The UP ARROW key.

V 86

The V key.

VolumeDown 174

The volume down key.

VolumeMute 173

The volume mute key.

VolumeUp 175

The volume up key.

W 87

The W key.

X 88

The X key.

XButton1 5

The first x mouse button (five-button mouse).

XButton2 6

The second x mouse button (five-button mouse).

Y 89

The Y key.

Z 90

The Z key.

Zoom 251

The ZOOM key.

Examples

The following code example uses the KeyDown event to determine the type of character entered into the control.

   // 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;
            }
         }
      }
      //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;
      }
   }
// 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;
            }
        }
    }
    //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.
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;
    }
}
 ' 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
     'If shift key was pressed, it's not a number.
     If Control.ModifierKeys = Keys.Shift Then
         nonNumberEntered = true
     End If
 End Sub


 ' 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

Remarks

The Keys class contains constants for processing keyboard input. The members of the Keys enumeration consist of a key code and a set of modifiers combined into a single integer value. In the Win32 application programming interface (API) a key value has two halves, with the high-order bits containing the key code (which is the same as a Windows virtual key code), and the low-order bits representing key modifiers such as the SHIFT, CONTROL, and ALT keys.

Warning

Do not use the values in this enumeration for combined bitwise operations. The values in the enumeration are not mutually exclusive.

Note

This enumeration provides no way to test whether the CAPS LOCK or NUM LOCK keys are currently activated. You can use one of the following techniques to determine if these keys are activated:

  • Call the IsKeyLocked method of the Control class.

  • For finer control, use the Windows API functions GetKeyState, GetAsyncKeyState, or GetKeyboardState defined in user32.dll, to do this. For more information about calling native functions, see Consuming Unmanaged DLL Functions.

The following table shows the key code values represented by two enumerated values, representing both the general original equipment manufacturer (OEM) keys and the more specific U.S.-keyboard associations.

Hexadecimal value U.S. keyboard General OEM
BA OemSemicolon Oem1
BF OemQuestion Oem2
C0 Oemtilde Oem3
DB OemOpenBrackets Oem4
DC OemPipe Oem5
DD OemCloseBrackets Oem6
DE OemQuotes Oem7
E2 OemBackslash Oem102

Caution

For the .NET Framework 2.0, a member IMEAccept was added that supersedes the previous entry, IMEAceept, which was spelled incorrectly. The older version has been retained for backward compatibility, but it may be deleted in future versions of the .NET Framework

Applies to

See also