2014-12-01 36 views
1

我有一個WPF MainWindow並嘗試對某個組合鍵(CTRL + F4)做出反應。我註冊用於測試目的以下方法:僅在首次交互後引發KeyEvents

private void Window_PreviewKeyDown(object sender, KeyEventArgs e) 
{ 
    Log.AsInfo("PreviewKeyDown"); 
} 

private void Window_KeyDown(object sender, KeyEventArgs e) 
{ 
    Log.AsInfo("KeyDown"); 
} 

private void Window_KeyUp(object sender, KeyEventArgs e) 
{ 
    Log.AsInfo("KeyUp"); 
} 

private void Window_PreviewKeyUp(object sender, KeyEventArgs e) 
{ 
    Log.AsInfo("PreviewKeyUp"); 
} 

瘋狂的事情是,當我與首次應用程序交互,這些方法只觸發:

它是如何不起作用:

  1. 我啓動應用程序
  2. 我在鍵盤上輸入Ctrl + F4
  3. 沒有任何反應

它是如何工作的:

  1. 我啓動應用程序
  2. 我在隨機菜單項,點擊沒有功能
  3. 我的鍵盤
  4. 一切正常上輸入CTRL + F4,日誌消息被寫入

任何想法?我甚至無法調試這種情況,因爲沒有一個處理程序方法首先被調用。我甚至在MainWindow構造函數中嘗試了this.Focus(),但這也沒有幫助。

+0

你可以發佈你的xaml代碼嗎?我測試了一個窗口和一個空格子裏面。我在啓動應用程序之後調用處理程序,而不點擊任何內容。 – 2014-12-01 20:17:36

+0

是的,當然。我不知道發佈較大代碼示例的最佳方式是什麼,但這裏是:[http://pastebin.com/im4vi528](http://pastebin.com/im4vi528)。我留下了一些元素,但它在評論中。 – Ronny93 2014-12-01 20:36:34

+0

可能的重複http://stackoverflow.com/questions/1361350/keyboard-shortcuts-in-wpf – Bijan 2014-12-01 20:47:10

回答

0

找到了解決方案:

我使用的瀏覽器控制是EO.WebBrowser。看起來,這個瀏覽器控件每次首次都會吞下關鍵的交互。我通過將我需要的功能綁定到WebBrowser控件的熱鍵實現了快捷鍵組合,如here所述。所以它不僅僅是一個WPF問題的第三方。