簡體   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