2009-09-19 44 views
3

我很困惑在KeyEventArgs處理的關鍵http://msdn.microsoft.com/en-us/library/system.windows.input.key.aspx
例如:我想處理冒號鍵(我的意大利語鍵盤與點+ Shift鍵上進行),所以我寫這樣什麼是正確和文化獨立的方式來處理WPF中的密鑰?

if (e.Key == Key.OemPeriod && e.KeyboardDevice.Modifiers == ModifierKeys.Shift) { 
    // Code 
} 

一些代碼,但這種做法是不正確的,因爲只有與意大利鍵盤工作。在WPF中處理Key的正確和文化無關的方法是什麼?

+1

問得好,其實。在WPF中沒有'KeyPress',所以我懷疑這個解決方案不會那麼簡單。此外,如果您可以爲您的問題提供更多的上下文,我們可能會更輕鬆地提出建議。 – Noldorin 2009-09-19 11:13:19

回答

3

您是否嘗試過處理PreviewTextInputTextInput事件呢?這些事件應該給你輸入的文本(這是設備無關的),而不是按下的物理鍵(這是設備相關的)。

+0

PreviewTextInput和TextInput提供了正確的信息。當我進行測試時,TextInput事件被困在其他地方,並且沒有達到我的控制,但是PreviewTextInput工作正常。 感謝 – 2009-09-19 18:47:13

+0

我的問題不僅是如何從一個文本框獲得字符。更一般的問題是關於從Keyboard事件到char表示的這種轉換的正確方法。 因爲我發現很奇怪的一種文化在鍵盤處理infrastracture依賴限制。 – 2009-09-19 18:52:01

+0

這些事件都只是圍繞着基本的Windows消息WPF包裝。您在WinForms,VB,MFC,WinAPI等中獲得相同的事件序列,只有事件/消息名稱不同。 Windows一直像AFAIK一樣工作。 – 2009-09-20 21:15:59

相關問題