Reputation: 4121
I have a form that the user can double click on with the mouse and it will do something. Now I want to be able to know if the user is also holding the Ctrl key down as the user double click on the form.
How can I tell if the user is holding the Ctrl key down?
Upvotes: 69
Views: 84597
Reputation: 41
This works for me:
if(Keyboard.IsKeyDown(Key.LeftCtrl))
{}
And add references to PresentationCore and WindowsBase
Upvotes: 4
Reputation: 5675
This isn't really an answer to the question at hand, but I needed to do this in a console application and the detail was a little different.
I had to add references to WindowsBase
and PresentationFramework
, and at that point I could do:
if (System.Windows.Input.Keyboard.Modifiers == ModifierKeys.Control)
blah
Just adding this here in case someone else is doing something similar.
Upvotes: 14
Reputation: 3381
Just for completeness... ModifierKeys
is a static property of Control
, so you can test it even when you are not directly in an event handler:
public static bool IsControlDown()
{
return (Control.ModifierKeys & Keys.Control) == Keys.Control;
}
Upvotes: 42
Reputation: 31
The same soneone said above, but comparing as different than zero, which should be a little faster and use less instructions on most architectures:
public static bool IsControlDown()
{
return (Control.ModifierKeys & Keys.Control) != 0;
}
Upvotes: 3
Reputation: 15344
Even this also
private void Control_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (ModifierKeys == Keys.Control)
MessageBox.Show("with CTRL");
}
Upvotes: 7
Reputation: 45058
Using .NET 4 you can use something as simple as:
private void Control_DoubleClick(object sender, EventArgs e)
{
if (ModifierKeys.HasFlag(Keys.Control))
{
MessageBox.Show("Ctrl is pressed!");
}
}
If you're not using .NET 4, then the availability of Enum.HasFlag
is revoked, but to achieve the same result in previous versions:
private void CustomFormControl_DoubleClick(object sender, EventArgs e)
{
if ((ModifierKeys & Keys.Control) == Keys.Control)
{
MessageBox.Show("Ctrl is pressed!");
}
}
Upvotes: 122