[英]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.