Test if the Ctrl key is down using C#

后端 未结 6 1215
一整个雨季
一整个雨季 2020-12-01 09:59

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 do

相关标签:
6条回答
  • 2020-12-01 10:44

    Even this also

     private void Control_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            if (ModifierKeys == Keys.Control)
                MessageBox.Show("with CTRL");
        }
    
    0 讨论(0)
  • 2020-12-01 10:48

    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!");
            }
        }
    
    0 讨论(0)
  • 2020-12-01 10:52

    This works for me:

     if(Keyboard.IsKeyDown(Key.LeftCtrl))
        {}
    

    And add references to PresentationCore and WindowsBase

    0 讨论(0)
  • 2020-12-01 10:59

    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.

    0 讨论(0)
  • 2020-12-01 11:01

    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;
    }
    
    0 讨论(0)
  • 2020-12-01 11:02

    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;
    }
    
    0 讨论(0)
提交回复
热议问题