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#中加号的关键代码,或者我错误地实现了密钥代码。有没有办法以编程方式找到字符的键代码,类似于如何识别变量类型,以便可以确定加号字符的键代码?或者,在尝试实现上述文本框功能时,我做错了吗?
答案 0 :(得分:0)
KeyCode
和KeyChar
不一样。
KeyCode
是KeyEventArgs
的属性,可为KeyDown
和KeyUp
事件提供数据。它的类型为Keys
,即enum
。
KeyChar
是KeyPressEventArgs
的属性,可为KeyPress
事件提供数据。这是char
。
两者的数字代码通常不同。
你可以像这样测试加号
ch != '+'
C#有一个escape sequnce退格('\b' == (char)8
)
if (!Char.IsDigit(ch) && ch != '\b' && ch != '+') e.Handled = true;