2011-01-14 87 views
0

我在我的WPF應用程序中嵌入了Acrobat Reader,並且我定義了幾個熱鍵,我想要做一些工作,但熱鍵僅在我處於文本框和類似內部時才起作用。我發現這一定是因爲Adobe Acrobat Reader在我之前得到了熱鍵,因爲如果我將ctrl-shift-s映射到一個函數,當我在文本框中按下它時,我的函數被調用,但是如果焦點不在一個文本框,Adobe的保存功能被調用。WPF:組件干擾熱鍵

我怎樣才能確保我爲MainWindow定義的熱鍵是被執行的熱鍵,而不是Acrobat Reader或其他的?

乾杯

回答

1

這聽起來像鍵盤焦點在應用程序中默認爲嵌入式Acrobat Reader軟件,所以當你的主窗口中的任何偏好得到一個按鍵也給了他們閱讀器一樣,包括它自己的菜單命令。

這有點難度,因爲你可能讀者接受焦點和處理其鍵盤快捷鍵 - 只是不是那些也是由您的主窗口定義的。

嘗試覆蓋MainWindow類中的OnKeyDown,並查看Ctrl + Shift + S是否到達那裏。如果是這樣,通過直接調用適當的命令事件處理程序進行響應,並在事件參數上將Handled設置爲true,以防止MainWindow在其他任何地方發送該密鑰。

+0

這聽起來很有趣。我不需要Acrobat Reader中的鍵盤快捷鍵,我只會用它來查看單個頁面,並且可能會複製一些OCR文本。 (好的,所以我想我需要ctrl-c,但就是這樣:-))有沒有辦法讓我的應用程序先處理鍵盤,獲得鍵盤焦點,然後將它留給Acrobat,如果我沒有迴應?感謝OnKeyDown的提示,我會用它來檢查。 :-) – niklassaers 2011-01-15 17:48:53