2011-07-04 68 views
0

我在第1頁中的「的OnNavigatedTo」的方法我如何知道用戶是否按下按鈕Ctrl + K?

page1.keyEventHandler += (s, k) => 
{ 
    if(k.Key == Key.P) 
    { 
      // Do Something ... 
    } 
} 

定義,但我需要知道,如果用戶在兩個鍵壓在一起......我需要知道,如果用戶 上按下的鍵。 Ctrl + Key.P

我該怎麼辦?

謝謝

回答

2

在這裏你去:

page1.keyEventHandler += (s, k) => { 

    if (Keyboard.Modifiers == ModifierKeys.Control && k.Key == Key.P) { 
    ... 
    } 
} 
1

不幸的是沒有這樣做的好方法。你需要發射2個事件。其中每個鍵,like so

private bool KeyADown = false; 
private bool KeyBDown = false; 

private void LayoutRoot_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.Key == Key.A) 
    { 
     KeyADown = true; 
    } 
    else if (e.Key == Key.B) 
    { 
     KeyBDown = true; 
    } 

    // check for Ctrl+A+B 
    if ((Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control) 
    { 
     if (KeyADown && KeyBDown) 
     { 
      MessageBox.Show("Ctrl+A+B detected"); 
     } 
    } 
} 

private void LayoutRoot_KeyUp(object sender, KeyEventArgs e) 
{ 
    if (e.Key == Key.A) 
    { 
     KeyADown = false; 
    } 
    else if (e.Key == Key.B) 
    { 
     KeyBDown = false; 
    } 
} 
+0

我相信樓主只是想檢測CTRL +組合鍵,而不是一個完整的密鑰和絃,所以我的解決辦法應該就夠了。否則這種方法很好。 – Palantir

相關問題