Shaul Behr
Shaul Behr

Reputation: 38003

How to tell if Shift is being pressed in a MouseDown event?

I am catching a MouseDown event on a control, which gives me a MouseEventArgs object in the signature. Now I want to be able to tell if the user was holding down the "Shift" or "Control" key when they clicked. But the MouseEventArgs object doesn't contain any keyboard information!

What's the easiest way of telling whether the keyboard Shift/Ctrl keys were being held at the time of the click?

Upvotes: 27

Views: 16437

Answers (2)

Hans Passant
Hans Passant

Reputation: 941525

Use the Control.ModifierKeys property to see what's pressed. For example:

    private void Form1_MouseClick(object sender, MouseEventArgs e) {
        if (Control.ModifierKeys == Keys.Control) {
            Console.WriteLine("Ctrl+Click");
        }
    }

Other modifiers are Keys.Alt and Keys.Shift. Find combinations with, say, (Keys.Control | Keys.Shift).

Upvotes: 45

Related Questions