Вы можете узнать, была ли нажата клавиша CapsLock, подписавшись на событие KeyDown / KeyUp. А затем переключите состояние CapsLock на основе этого ввода. Проблема с этим подходом заключается в том, что вам нужно начальное состояние клавиши CapsLock, чтобы начать переключать это.
Одним из применений этого может быть уведомление пользователя на странице входа в систему (это то, что мне нужно).
Кстати, я использую Silverlight 5.
ИЗМЕНИТЬ
В решении, размещенном здесь, говорится:
Однако вы можете узнать, включен ли 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
.
Ответ на этот вопрос, похоже, тоже имеет решение, он проверяет две вещи:
- набрана буква в верхнем регистре, Shift не нажимается
- набрана буква нижнего регистра и нажата кнопка Sift
Оба этих случая подразумевают, что CapsLock включен, но есть также проблема с этим решением, учитывая KeyEventArgs, вы можете знать нажатую клавишу на клавиатуре, но не можете знать Char, выводимый этой клавишей.