mirror of
https://github.com/Stone-Red-Code/docs-desktop.git
synced 2026-09-05 23:42:58 +02:00
49 lines
4.2 KiB
Markdown
49 lines
4.2 KiB
Markdown
---
|
|
title: "How to: Determine Which Modifier Key Was Pressed"
|
|
ms.date: "03/30/2017"
|
|
dev_langs:
|
|
- "csharp"
|
|
- "vb"
|
|
- "cpp"
|
|
helpviewer_keywords:
|
|
- "keyboard input"
|
|
- "shift keys"
|
|
- "events [Windows Forms], mouse"
|
|
- "Keys.ControlKey enumeration member"
|
|
- "keys [Windows Forms], control keys"
|
|
- "user input [Windows Forms], checking for keyboard"
|
|
- "keys [Windows Forms], determining last pressed"
|
|
- "keys [Windows Forms], shift keys"
|
|
- "keys [Windows Forms], modifier keys"
|
|
- "control keys"
|
|
- "keys [Windows Forms], alt keys"
|
|
- "alt keys"
|
|
- "Keys.Shift enumeration member"
|
|
- "events [Windows Forms], keyboard"
|
|
- "keyboards [Windows Forms], keyboard input"
|
|
- "Keys.Alt enumeration member"
|
|
- "modifier keys"
|
|
ms.assetid: 1e184048-0ae3-4067-a200-d4ba31dbc2cb
|
|
---
|
|
# How to: Determine Which Modifier Key Was Pressed
|
|
|
|
When you create an application that accepts the user's keystrokes, you may also want to monitor for modifier keys such as the SHIFT, ALT, and CTRL keys. When a modifier key is pressed in combination with other keys, or with mouse clicks, your application can respond appropriately. For example, if the letter S is pressed, this may simply cause an "s" to appear on the screen, but if the keys CTRL+S are pressed, the current document may be saved. If you handle the <xref:System.Windows.Forms.Control.KeyDown> event, the <xref:System.Windows.Forms.KeyEventArgs.Modifiers%2A> property of the <xref:System.Windows.Forms.KeyEventArgs> received by the event handler specifies which modifier keys are pressed. Alternatively, the <xref:System.Windows.Forms.KeyEventArgs.KeyData%2A> property of <xref:System.Windows.Forms.KeyEventArgs> specifies the character that was pressed as well as any modifier keys combined with a bitwise OR. However, if you are handling the <xref:System.Windows.Forms.Control.KeyPress> event or a mouse event, the event handler does not receive this information. In this case, you must use the <xref:System.Windows.Forms.Control.ModifierKeys%2A> property of the <xref:System.Windows.Forms.Control> class. In either case, you must perform a bitwise AND of the appropriate <xref:System.Windows.Forms.Keys> value and the value you are testing. The <xref:System.Windows.Forms.Keys> enumeration offers variations of each modifier key, so it is important that you perform the bitwise AND with the correct value. For example, the SHIFT key is represented by <xref:System.Windows.Forms.Keys.Shift>, <xref:System.Windows.Forms.Keys.ShiftKey>, <xref:System.Windows.Forms.Keys.RShiftKey> and <xref:System.Windows.Forms.Keys.LShiftKey> The correct value to test SHIFT as a modifier key is <xref:System.Windows.Forms.Keys.Shift>. Similarly, to test for CTRL and ALT as modifiers you should use the <xref:System.Windows.Forms.Keys.Control> and <xref:System.Windows.Forms.Keys.Alt> values, respectively.
|
|
|
|
> [!NOTE]
|
|
> Visual Basic programmers can also access key information through the <xref:Microsoft.VisualBasic.Devices.Computer.Keyboard%2A> property
|
|
|
|
### To determine which modifier key was pressed
|
|
|
|
- Use the bitwise `AND` operator with the <xref:System.Windows.Forms.Control.ModifierKeys%2A> property and a value of the <xref:System.Windows.Forms.Keys> enumeration to determine whether a particular modifier key is pressed. The following code example shows how to determine whether the SHIFT key is pressed within a <xref:System.Windows.Forms.Control.KeyPress> event handler.
|
|
|
|
[!code-cpp[System.Windows.Forms.DetermineModifierKey#5](~/samples/snippets/cpp/VS_Snippets_Winforms/System.Windows.Forms.DetermineModifierKey/cpp/form1.cpp#5)]
|
|
[!code-csharp[System.Windows.Forms.DetermineModifierKey#5](~/samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DetermineModifierKey/CS/form1.cs#5)]
|
|
[!code-vb[System.Windows.Forms.DetermineModifierKey#5](~/samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DetermineModifierKey/VB/form1.vb#5)]
|
|
|
|
## See also
|
|
|
|
- <xref:System.Windows.Forms.Keys>
|
|
- <xref:System.Windows.Forms.Control.ModifierKeys%2A>
|
|
- [Keyboard Input in a Windows Forms Application](keyboard-input-in-a-windows-forms-application.md)
|
|
- [How to: Determine If CapsLock is On in Visual Basic](/previous-versions/visualstudio/visual-studio-2010/9c9d1fz9(v=vs.100))
|