从鼠标事件中获取shift/ctrl/alt状态?

djc*_*uch 14 c# wpf mouseevent

在我的WPF应用程序,我怎么弄的状态shift,ctrlalt在我的鼠标事件处理程序的钥匙?我似乎记得MFC你可以从鼠标事件中获取该信息.

And*_*ndy 19

假设您仍在鼠标事件处理程序中,则可以检查Keyboard.Modifiers的值.我不认为无论如何都要从事件本身获取修改器信息,因此您必须直接询问键盘.

  • 多么烦人...如果我理解正确这意味着如果用户在触发鼠标事件的时间和事件处理程序询问键盘之间放开键盘,它将检测错误的键状态. (3认同)

mkg*_*der 18

根据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");
    }
}
Run Code Online (Sandbox Code Playgroud)

问候,迈克