Обработка событий нажатия клавиш в Silverlight - PullRequest
1 голос
/ 22 февраля 2011

Мое приложение должно работать в браузере с ограниченной безопасностью. Из-за этого ввод текстового поля блокируется в Silverlight (но не в HTML). Мне нужно перехватить нажатия клавиш и поместить их в текстовое поле, чтобы переопределить эту функцию.

При обнаружении ключевого события все буквы возвращаются в верхнем регистре. (Почему ??) Мне нужно иметь возможность преобразовать нажатие клавиш в нижний регистр, но у меня нет доступа к состоянию сдвига в KeyEventArgs. Предполагается, что PlatformKeyCode возвращает ascii (это приложение только на английском и американском языках), но не определяет состояние сдвига и возвращает все строчные клавиши в верхнем регистре. Эти текстовые поля вводятся по имени пользователя и паролю и чувствительны к регистру.

Мне трудно поверить, что я не могу сделать что-то столь же простое, как получить имя пользователя и пароль.

У меня нет контроля над настройками безопасности браузера IE, так как он работает в отдельном настольном приложении, написанном другой компанией. Этот веб-сайт предназначен для взаимодействия с этим настольным программным обеспечением. Авторы программного обеспечения не знают, почему не работает ввод текста Silverlight. Текстовые поля работают нормально в обычном браузере.

1 Ответ

1 голос
/ 22 февраля 2011

Используйте значение Keyboard.Modifiers, чтобы определить, нажата ли shift .

ModifierKeys keys = Keyboard.Modifiers;
bool shiftKey = (keys & ModifierKeys.Shift) != 0; 

Этот блог содержит дополнительную информацию для этого и других ключей.

Обратите внимание, что события нажатия клавиши сообщают вам, какая клавиша нажата, а не какой символ генерирует эта клавиша. Между ними есть различие.

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