最近修改的一個需求要求捕獲鍵盤輸入的 Text,包括各種标點符号。
最開始想到的是 PreviewKeyDown 或者 PreviewKeyUp 這樣的鍵盤事件。
但是這兩個事件的對象 KeyEventArgs 不夠用,得依靠判斷 Key 來判斷輸入了什麼,然後再根據判斷寫死一個相應鍵位的 Text 來擷取資料。
如組合鍵擷取 乘号鍵 需要用到 Shift + 8(數字鍵盤那的乘号鍵是 Key.Multiply ,而需要在主鍵盤位擷取則需要用到組合鍵)
這種辦法既不友好且需要用到其他标點符号時還得另外加 if 條件,而且會發生 Key 沖突的問題,如上你輸入完 乘号鍵 以後可能還會多加一個“8”,由于 Key.D8 的原因
随後花了點時間找了下國外部落格,然後發現了這個文章(引用1),其實文章内的解決方案部落格園也能找到幾篇,但是不詳細一筆帶過。
這是我根據文章内寫的代碼
XAML:
C#:
引用
<a href="http://stackoverflow.com/questions/2924928/wpf-previewkeydown-event-and-underscore-char" target="_blank">http://stackoverflow.com/questions/2924928/wpf-previewkeydown-event-and-underscore-char</a>
總結
關于PreviewKeyDown和KeyDown的差別園區裡也有很多相關的文章,以後我也将會寫一個,畢竟我也碰到過這個坑...