Andreas Grech
Andreas Grech

Reputation: 107940

C#: Getting the correct keys pressed from KeyEventArgs' KeyData

I am trapping a KeyDown event and I need to be able to check whether the current keys pressed down are : Ctrl + Shift + M ?


I know I need to use the e.KeyData from the KeyEventArgs, the Keys enum and something with Enum Flags and bits but I'm not sure on how to check for the combination.

Upvotes: 4

Views: 14318

Answers (3)

Mike Dinescu
Mike Dinescu

Reputation: 55730

You need to use the Modifiers property of the KeyEventArgs class.

Something like:

//asumming e is of type KeyEventArgs (such as it is 
// on a KeyDown event handler
// ..
bool ctrlShiftM; //will be true if the combination Ctrl + Shift + M is pressed, false otherwise

ctrlShiftM = ((e.KeyCode == Keys.M) &&               // test for M pressed
              ((e.Modifiers & Keys.Shift) != 0) &&   // test for Shift modifier
              ((e.Modifiers & Keys.Control) != 0));  // test for Ctrl modifier
if (ctrlShiftM == true)
{
    Console.WriteLine("[Ctrl] + [Shift] + M was pressed");
}

Upvotes: 12

Ivandro Jao
Ivandro Jao

Reputation: 2961

I think its easiest to use this:

if(e.KeyData == (Keys.Control | Keys.G))

Upvotes: 1

Eric
Eric

Reputation: 464

You can check using a technique similar to the following:

if(Control.ModifierKeys == Keys.Control && Control.ModifierKeys == Keys.Shift)

This in combination with the normal key checks will give you the answer you seek.

Upvotes: -2

Related Questions