HtmlElementEventArgs KeyPressedCode Confusion - PullRequest
0 голосов
/ 19 июля 2009

Я использую следующий код, чтобы решить, если '.' (полная остановка) введен в элемент управления веб-браузера:

    private void body_KeyUp(object sender, HtmlElementEventArgs e)
    {
        if (e.KeyPressedCode == '.')
        {
            // Do something
        }
    }

Согласно msdn KeyPressedCode возвращает значение ASCII. То, что я получаю с помощью контрольной точки, это «190», если я ввожу «.» тем не мение. Это даже не указано в стандартной таблице ASCII. Очевидно, я мог бы просто проверить 190, но я боюсь, что KeyPressedCode может возвращать разные значения в разных системах с разными кодовыми страницами, языками и т. Д.

Не могли бы вы объяснить, почему KeyPressedCode возвращает «190» вместо «46» и как я могу «безопасно» справиться с этой проблемой?

Интересно, что возвращаемое значение для '' (пробел) всегда корректно ('32'). Игра с System.Text.Encoding.GetEncoding и различными кодовыми страницами не решила проблему, однако у меня нет большого опыта работы с кодовыми страницами.

Ответы [ 2 ]

2 голосов
/ 27 июля 2012

Скорее всего, вы используете проводную клавиатуру, потому что код 190 - это код OEM-номера .. Если вы используете ноутбук, он будет вести себя так, как вы ожидали.

1 голос
/ 19 июля 2009

Просто дикая догадка, но проверяли ли вы значения e.AltKeyPressed , e.CtrlKeyPressed и e.ShiftKeyPressed ? Надеюсь, ты видишь, к чему я клоню ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...