繁体   English   中英

WPF MouseLeftButtonDown 事件处理程序中的 Ctrl 键按下条件

[英]Ctrl key press condition in WPF MouseLeftButtonDown event-handler

如何将某个键盘键的附加条件添加到 WPF MouseLeftButtonDown事件处理程序?

例如Ctrl + 键

private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{         
    ...
}
private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) {
    if(Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl)) {
        MessageBox.Show("Control key is down");
    } else {
        MessageBox.Show("Control key is up");
    }
}

如果只想检测修饰符,则还可以使用:

if (Keyboard.Modifiers == ModifierKeys.Control) {}
if (Keyboard.Modifiers == ModifierKeys.Shift) {}

等。更在这里

在.NET 4.0中,您可以使用:

Keyboard.Modifiers.HasFlag(ModifierKeys.Control)

正如上面 Grzegorz Godlewski 所说( https://stackoverflow.com/a/34198469/3856798 ),可以使用 Keyboard.Modifiers.HasFlag(ModifierKey.Control) ,尽管@l33t 指出它在评论中的性能不是很好似乎在 .NET 4.5/4.6 中 HasFlag 的性能有所改进(请参阅基准测试结果是什么使 Enum.HasFlag 如此缓慢?以及下面的评论,以及https://stackoverflow.com/a/11665571 ) .

但是从这里的结论来看,仍然没有比进行本机检查(即 flagsToCheck & flag:= 0 )更快的方法: https://stackoverflow.com/a/71038210

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM