2009-08-14 71 views

回答

19

假设您仍在鼠标事件处理程序中,可以检查Keyboard.Modifiers的值。我认为无论如何,从事件本身获取修饰符信息,所以你必须直接询问键盘。

+3

真讨厌......如果我理解正确的话,这意味着如果用户在触发鼠标事件的时间和事件处理程序询问键盘的时间之间放开键盘,它将检测错误的键状态。 – 2009-09-15 14:49:16

+1

@ M.Dudley无论您是捕获键盘状态还是WPF都无所谓......鼠标和键盘不相交,因此竞争条件是不可避免的。 – 2016-02-27 10:38:58

16

根据Andy的回答,您使用Keyboard.Modifiers。我想我会发布一个小例子

像这样的事情在你的事件处理程序应工作:

private void MyExampleButton_Click(object sender, RoutedEventArgs e) 
{ 
    if ((Keyboard.Modifiers & ModifierKeys.Control) > 0) { 
     System.Diagnostics.Debug.WriteLine("Control is pressed"); 
    } else { 
     System.Diagnostics.Debug.WriteLine("Control is NOT pressed"); 
    } 
} 

的问候, 迈克