Dav*_*nas 5 c# wpf keyboard-events
我有一个带有事件的文本框,当输入一些文本时,它应该做一些事情。很容易检查它是否是字母数字,如此处所述我可以确定 KeyEventArg 是字母还是数字吗?:
if ( ( ( e.KeyCode >= Keys.A && e.KeyCode <= Keys.Z ) ||
( e.KeyCode >= Keys.D0 && e.KeyCode <= Keys.D9 ) ||
( e.KeyCode >= Keys.NumPad0 && e.KeyCode <= Keys.NumPad9 ) )
Run Code Online (Sandbox Code Playgroud)
这种方法的问题是,我也应该手动检查-?!¿[]()用Key.OemMinus,Key.OemQuestion等等。
有什么方法可以检查它是文本按键还是我应该手动检查(在我看来这不是很优雅)?
由于没有建议其他选项,我使用以下代码来允许几乎所有文本击键。不幸的是,这是依赖于键盘的,所以它不是很优雅。希望这不是应用程序中的关键方面,这只是可用性问题。
bool isText = (e.Key >= Key.A && e.Key <= Key.Z) || (e.Key >= Key.D0 && e.Key <= Key.D9) || (e.Key >= Key.NumPad0 && e.Key <= Key.NumPad9)
|| e.Key == Key.OemQuestion || e.Key == Key.OemQuotes || e.Key == Key.OemPlus || e.Key == Key.OemOpenBrackets || e.Key == Key.OemCloseBrackets || e.Key == Key.OemMinus
|| e.Key == Key.DeadCharProcessed || e.Key == Key.Oem1 || e.Key == Key.Oem7 || e.Key == Key.OemPeriod || e.Key == Key.OemComma || e.Key == Key.OemMinus
|| e.Key == Key.Add || e.Key == Key.Divide || e.Key == Key.Multiply || e.Key == Key.Subtract || e.Key == Key.Oem102 || e.Key == Key.Decimal;
Run Code Online (Sandbox Code Playgroud)