在Silverlight应用程序的登录屏幕中,我需要确定是否切换Caps Lock。通过处理KeyUp或KeyDown事件可以很容易,但是即使没有按下某个键,如何确定它是打开还是关闭?
我想要这样做的原因是,如果用户在Silverlight应用程序运行时没有按Caps Lock,而是在他们进入登录屏幕之前切换它?我还需要警告他们已经开启大写锁定。
在Silverlight中显然无法处理非托管代码,因此以下操作无效。
[的DllImport( “USER32.DLL”)] internal static extern short GetKeyState(int keyCode);
答案 0 :(得分:4)
检测CAPS LOCKS的方法是检查KeyValue和KeyEventArgs的Shift。
如果KeyValue是(例如)'A'但是Shift为假则CAPS LOCKS开启。
不是最好的方式,而是how ajax applications has been doing it。
答案 1 :(得分:0)
据我所知你不能。您可以从应用程序中上下移动键,但如果用户离开您的应用程序,您将无法知道它处于什么状态。
我在SL3中没有注意到它有任何额外的支持,但我不能说我一直在寻找它。
答案 2 :(得分:0)
Silverlight不支持在客户端调用Win32 DLL。因此,您无法使用上述技术来测试是否按下了Capslock键。您是否尝试过使用KeyDown事件并测试系统密钥?我没有这样做,但这是一种预感。