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