您可能会发现是否已按下 CapsLock 键以订阅 KeyDown/KeyUp 事件。然后根据该输入切换 CapsLock 的状态。这种方法的问题是您需要 CapsLock 键的初始状态才能开始切换它。
一个应用程序可能是在登录页面上给用户一个通知(这是我需要的)。
顺便说一句,我正在使用 Silverlight 5。
编辑
此处发布的解决方案说:
但是,您可以通过使用实际在 onKeyDown 发送的 KeyEventArgs.PlatformKeyCode 来确定 Capslock 是否打开。您可以在此处查找大写锁定的虚拟键代码:http: //msdn.microsoft.com/en-us/库/ms927178.aspx
使用此解决方案,您无法确定 CapsLock 状态,因为KeyEventArgs.PlatformKeyCode
返回“表示按下或释放键的整数值(取决于引发的事件)”。因此,如果 CapsLock 为 On 且 Key A 被按下KeyEventArgs.PlatformKeyCode = 65
,则另一方面,如果 CapsLock 为 off 且 Key A 被按下KeyEventArgs.PlatformKeyCode = 65
。
换句话说,您无法根据KeyEventArgs.PlatformKeyCode
属性确定是否启用了 CapsLock。
这个问题的答案似乎也有解决方案,它检查两件事:
- 键入的字母是大写字母并且没有按下 Shift
- 键入的字母为小写并按下 Sift
这两种情况都意味着 CapsLock 已打开,但此解决方案也存在问题,给定 KeyEventArgs,您可以知道键盘上按下的键,但无法知道该键输出的 Char。