如何在 C# 中找到字符的键码?

How do I find the key code of a character in C#?

Microsoft 提供了 documentation for key codes 个字符。例如,可以发现删除键的键码是 8,而添加键 (+) 的键码是 107。在 Windows 表单应用程序中,我试图创建一个文本框,它只会接受数字和加号 (+)。为此,我实现了以下代码:

private void ansBox_KeyPress(object sender, KeyPressEventArgs e)
{
   char ch = e.KeyChar;
   if (!Char.IsDigit(ch) && ch != 8 && ch != 107) e.Handled = true;
}

该代码成功地禁止了除数字和删除之外的所有输入,但令我惊讶的是阻止了加号 (+) 的使用。这使我相信“​​107”不是 C# 中加号的键码,或者我错误地实现了键码。有没有一种方法可以像识别变量类型那样以编程方式找到字符的键码,从而确定加号的键码?或者,我在尝试实现上述文本框功能时是否做错了什么?

KeyCodeKeyChar不一样。

KeyCodeKeyEventArgs 的 属性 并为 KeyDownKeyUp 事件提供数据。它的类型为 Keys,即 enum

KeyCharKeyPressEventArgs 的 属性 并为 KeyPress 事件提供数据。这是一个 char.

两者的数字代码往往不同

您可以像这样简单地测试加号

ch != '+'

C# 有一个 escape sequnce 退格键 ( '\b' == (char)8 )

if (!Char.IsDigit(ch) && ch != '\b' && ch != '+') e.Handled = true;