Получение номера как Int от нажатия клавиши - PullRequest
1 голос
/ 30 сентября 2011

Я пытаюсь получить целое число от цифровых клавиш на клавиатуре.Например, я хочу нажать 5 и получить целое число 5.

Я использую событие KeyDown и получаю следующее:

    private void listBox1_KeyDown(object sender, KeyEventArgs e)
    {
            int rating = (int)e.KeyValue;
    }

И вывод, который я получаю, представляет собой целые числа издиапазон 50-60.Я также безуспешно пытался использовать e.KeyData и e.KeyCode.

Любая помощь в этом была бы признательна, я чувствую, что это нечто простое, что я пропускаю или не понимаю.

Ответы [ 2 ]

3 голосов
/ 30 сентября 2011

e.KeyValue возвращает код символа нажатой клавиши.

Чтобы получить действительную цифру, вы можете сделать несколько вычитаний символов, т.е.

int value = 0;
if (e.KeyValue >= 48 && e.KeyValue <= 57)
   value = e.KeyValue - 48;

Примечание: если вам интересно, откуда берутся 48 и 57, вы можете проверить таблицу ASCII: http://www.asciitable.com/index/asciifull.gif

1 голос
/ 30 сентября 2011

Это работает .... вроде хаки ...

Convert.ToInt32(e.KeyData.ToString()).Replace("D",""));
...