2011-05-16 41 views
2

我們有一個WPF應用程序,我們需要檢測用戶是否正在輸入可以出現在文本框中的東西。 WinForms過去有一個很好的OnKeyPressed重寫,它與OnKeyDown的不同之處在於,它僅在可打印字符被鍵入時調用(例如,它區分'A'和'a',但不是在頂部行'1'和數字鍵盤,它也忽略了像'Shift'等鍵)我們需要在WPF中複製該功能。在WPF中,我如何複製舊的WinForms OnKeyPressed功能?

現在我知道我可以重寫OnKeyDown並檢查鍵碼,但是這意味着要手動測試每個可能導致出現在文本框中的鍵的可能鍵。這似乎是我發現的其他類似SO問題的共識,但我不能相信這麼基本的東西會被排除在API之外。

除了怪物if-tree,一個'hacky'解決方案是使用內存中的文本框,將keycode傳遞給它,然後檢查文本是否有長度。但即使將其作爲可能的解決方案,我也會感到噁心!啊!!我覺得很骯髒!

SO ...如果用戶按下一個或多個可導致可打印字符的按鍵,最簡單的方法是什麼?

TIA,

馬克

回答

3

其實,我想我只是發現它,所以我發帖對他人的答案。你根本不使用任何'Key'事件。 WPF更清晰地區分了文本值。因此,您可以覆蓋OnPreviewTextInput和/或OnTextInput的功能。要獲得實際輸入的內容,請檢查返回簡單字符串的事件參數的.Text屬性。

完成並完成!

希望這可以幫助別人!一直在把我拉上牆!