如何确定在按钮单击期间按下了控制键

14
我该如何确定在 C# Windows 程序中按钮单击时是否按住了控制键?我想让一种操作在按下 Ctrl/单击时执行,另一种操作在普通单击时执行。
2个回答

31

还有一点需要注意:

private void button1_Click ( object sender, EventArgs e )
{           
    if( (ModifierKeys  & Keys.Control) == Keys.Control )
    {
        ControlClickMethod();    
    }
    else
    {
        ClickMethod();
    }
}

private void ControlClickMethod()
{
    MessageBox.Show( "Control is pressed" );
}

private void ClickMethod()
{
    MessageBox.Show ( "Control is not pressed" );
}

我感觉真的很蠢。我不知道 ModifierKeys 的存在。多年来,我一直在用老方法(捕获 keydown 并设置布尔值)。我想每天都会学到新东西。 :) - John Kraft
3
每天我都感觉自己很“愚蠢”……特别是每次来到StackOverflow时,看到那些“聪明”的开发者们,我就会受到启发,努力变得更好。(顺便说一句,这并不意味着我认为你很“愚蠢”) - Simon Wilson
非常感谢,Simon。完美地运作!我投了你一票,但“接受答案”的链接去哪里了! - rp.
我相信如果您是问题的所有者,应该会看到一个勾选标记可供点击? - Simon Wilson
明白了。非常感谢您。我在网上搜索了很多,然后您在几分钟内回答了我。我很感激。 - rp.

5

假设使用WinForms,可以使用Control.ModifierKeys,例如:

private void button1_Click(object sender, EventArgs e) {
    MessageBox.Show(Control.ModifierKeys.ToString());
}

假设你正在使用WPF,可以使用Keyboard.Modifiers,例如:
private void Button_Click(object sender, RoutedEventArgs e) {
    MessageBox.Show(Keyboard.Modifiers.ToString());
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接