5

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

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

显然,在 Silverlight 中无法处理非托管代码,因此以下内容不起作用。

[DllImport("user32.dll")] internal static extern short GetKeyState(int keyCode);

4

3 回答 3

3

检测 CAPS LOCKS 的方法是检查 KeyValue 和 KeyEventArgs 的 Shift。
如果 KeyValue 为(例如)“A”但 Shift 为假,则 CAPS LOCKS 处于打开状态。
不是最好的方法,但它是如何 ajax 应用程序一直在做的。

于 2009-04-09T07:23:40.147 回答
0

据我所知,你不能。您可能能够从您的应用中获取上下键,但如果用户离开您的应用,您将不知道它处于什么状态。

我没有注意到 SL3 中对它有任何额外的支持,但我不能说我一直在特别寻找它。

于 2009-04-09T07:10:09.227 回答
0

Silverlight 不支持在客户端调用 Win32 DLL。所以你不能使用上面的技术来测试 Capslock 键是否被按下。您是否尝试过使用 KeyDown 事件并测试系统键?我没有这样做,但这是一种预感。

于 2009-04-09T07:14:31.637 回答