You are on page 1of 3

Detecting arrow keys

Detecting arrow keys in winforms C# and vb.net


Most Windows Forms applications process keyboard input exclusively by handling the keyboard
events. You can detect most physical key presses by handling the KeyDown or KeyUp events.
Key events occur in the following order:
KeyDown
KeyPress
KeyUp

Handle arrow key events in c# and vb.net


Arrow Key movement on Forms c# and vb.net
In most cases, the standard KeyUp, KeyDown, and KeyPress events are enough to catch and
handle keystrokes. However, not all controls raise these events for all keystrokes under all
conditions. For example. The KeyPress event is raised for character keys while the key is pressed
and then released. But This event is not raised by noncharacter keys, unlike KeyDown and
KeyUp, which are also raised for noncharacter keys
Handle arrow key events in Windows Forms in C# and VB.Net
In order to capture keystrokes in a Forms control, you must derive a new class that is based on
the class of the control that you want, and you override the ProcessCmdKey().

Syntax:
C#:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
//handle your keys here
}

VB.Net:
Protected Overrides Function ProcessCmdKey(ByRef msg As Message, ByVal keyData
As Keys) As Boolean
'handle your keys here
End Function

This ProcessCmdKey is called during message preprocessing to handle command keys, also it is
called only when the control is hosted in a Windows Forms application or as an ActiveX control.

How to detect which Arrow Key is pressed ?


C# code for capture arrow keys.
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
//capture up arrow key
if (keyData == Keys.Up )
{
MessageBox.Show("You pressed Up arrow key");
return true;
}
//capture down arrow key
if (keyData == Keys.Down )
{
MessageBox.Show("You pressed Down arrow key");
return true;
}
//capture left arrow key
if (keyData == Keys.Left)
{
MessageBox.Show("You pressed Left arrow key");
return true;
}
//capture right arrow key
if (keyData == Keys.Right )
{
MessageBox.Show("You pressed Right arrow key");
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}

VB.Net code for capture arrow keys.


Protected Overrides Function ProcessCmdKey(ByRef msg As Message, ByVal keyData
As Keys) As Boolean
'detect up arrow key
If keyData = Keys.Up Then
MessageBox.Show("You pressed Up arrow key")
Return True
End If
'detect down arrow key
If keyData = Keys.Down Then
MessageBox.Show("You pressed Down arrow key")
Return True
End If
'detect left arrow key
If keyData = Keys.Left Then
MessageBox.Show("You pressed Left arrow key")
Return True
End If
'detect right arrow key
If keyData = Keys.Right Then
MessageBox.Show("You pressed Right arrow key")

Return True
End If
Return MyBase.ProcessCmdKey(msg, keyData)
End Function

KeyPress events in C# , VB.Net


Windows Forms processes keyboard input by raising keyboard events in response to Windows
messages. Most Windows Forms programs process keyboard input by handling the keyboard
events. You can detect most physical key presses by handling the KeyDown or KeyUp events.
From the following link you can learn more about.... KeyPress events in C# and .. KeyPress
events in VB.Net