Вы можете узнать, была ли нажата клавиша CapsLock, подписавшись на событие KeyDown / KeyUp. А затем переключите состояние CapsLock на основе этого ввода. Проблема этого подхода заключается в том, что вам нужно исходное состояние ключа CapsLock, чтобы начать его переключать.
Одним из применений этого может быть предоставление пользователю уведомления на странице входа (это то, что мне нужно).
Кстати, я использую Silverlight 5.
EDIT
Решение опубликовано здесь говорит:
Однако вы можете узнать, включен ли Capslock, используя
KeyEventArgs.PlatformKeyCode, который фактически отправляется на onKeyDown. Вы можете
посмотрите код виртуального ключа для capslock здесь:
http://msdn.microsoft.com/en-us/library/ms927178.aspx
С этим решением вы не можете определить состояние CapsLock, потому что KeyEventArgs.PlatformKeyCode
возвращает «целочисленное значение, которое представляет нажатую или отпущенную клавишу (в зависимости от того, какое событие вызвано)». Таким образом, если CapsLock включен и клавиша A нажата, то KeyEventArgs.PlatformKeyCode = 65
, а с другой стороны, если CapsLock выключен и клавиша A нажата, KeyEventArgs.PlatformKeyCode = 65
.
Другими словами, вы не можете определить, включен ли CapsLock или нет на основе свойства KeyEventArgs.PlatformKeyCode
.
Ответ на этот вопрос также, кажется, имеет решение, он проверяет две вещи:
- набрана буква Upper Case и Shift не нажимается
- набранная буква строчная и нажата Sift
В обоих случаях подразумевается, что CapsLock включен, но есть также проблема с этим решением, учитывая KeyEventArgs, вы можете знать нажатую клавишу на клавиатуре, но не можете знать Char, выданный этой клавишей.