如何确定Caps Lock是否在Silverlight应用程序中切换?

时间:2009-04-09 06:59:52

标签: silverlight dllimport user32

在Silverlight应用程序的登录屏幕中,我需要确定是否切换Caps Lock。通过处理KeyUp或KeyDown事件可以很容易,但是即使没有按下某个键,如何确定它是打开还是关闭?

我想要这样做的原因是,如果用户在Silverlight应用程序运行时没有按Caps Lock,而是在他们进入登录屏幕之前切换它?我还需要警告他们已经开启大写锁定。

在Silverlight中显然无法处理非托管代码,因此以下操作无效。

[的DllImport( “USER32.DLL”)] internal static extern short GetKeyState(int keyCode);

3 个答案:

答案 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事件并测试系统密钥?我没有这样做,但这是一种预感。