5

我想要做的就是获取在为事件输入键时按下的实际字符。

我看到的唯一选择是e.KeyChar给我位置而不是角色本身。

我想要做的是将按键的值限制为0-9之间的数字。我现在的做法就是if((e.KeyChar < 48 || (e.KeyChar > 57)))

仅输入 0 和 9 的值似乎有点便宜,而且我很想知道如何获取角色值本身而不是其键。

编辑:感谢您的输入;所以一般来说,没有办法从拥有e.KeyChar价值到输入本身的价值。

我真的很想接受我的事件 e,并直接访问按下的字符,而不是使用 e.KeyChar 来获取该值的数字表示。

4

3 回答 3

5

这是检测按下的键是否为数字的更简单方法:

if (char.IsDigit(e.KeyChar)) { // doSomething(); }
于 2013-04-04T02:11:03.857 回答
2

KeyChar是一个char值 - 它0字符本身 - 48 和 57 是and的 ascii 值9

在 C# 中,您可以通过其数字 ASCII 代码或单引号中的实际字符来引用字符。因此,您的代码可以变成:

if((e.KeyChar < '0' || (e.KeyChar > '9')))

这是完全相同的事情。

于 2013-04-04T02:07:30.057 回答
2

e.KeyCharchar对应于按下的键,而不是位置。.NET Framework 用于char表示 Unicode 字符。如果“实际字符值”是指字符 0-9 的整数值,而不是它们的 Unicode 值(48-57),您可以这样做:

var value = Char.GetNumericValue(e.KeyChar);

要将按键的值限制为 0-9 之间的数字:

if (!Char.IsDigit(e.KeyChar))
{
    e.Handled = true;
    return;
}

对于更完整的解决方案,允许更正:

const char Backspace = '\u0008';
const char Delete = '\u007f';

if (!Char.IsDigit(e.KeyChar)    // Allow 0-9
    && e.KeyChar != Backspace   // Allow backspace key
    && e.KeyChar != Delete)     // Allow delete key
{
    e.Handled = true;
    return;
}
于 2013-04-04T07:45:26.693 回答