c# - 识别事件键是否为文本(不仅是字母数字)

标签 c# wpf keyboard-events

我有一个带有事件的文本框,当输入一些文本时,该事件应该执行一些操作。很容易检查它是否是此处所述的字母数字 Can I determine if a KeyEventArg is an letter or number? :

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 ) )

这种方法的问题是我还应该使用 Key.OemMinusKey.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;

关于c# - 识别事件键是否为文本(不仅是字母数字),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11881199/

相关文章:

c# - CaSTLe Windsor 组件注册上下文中的 "ForwardedTypes"是什么?

c# - 有没有正确的方法来创建 html src 路径?

wpf - 有人在Revit环境中使用WPF/MVVM吗?

javascript - 如何检测支撑行程

python - Windows 上 VTK 中的箭头键事件

c# - 如何访问 RunSettings 文件中的 TestRunParameters

c# - 何时添加 gridview 中自动生成的列?

c# - WPF 页面之间的切换

wpf - 在 WPF 中更改标签的样式和模板

delphi - 为什么我的键盘 Hook 多次收到相同的按键向上和按键按下事件?