2009-04-09 6 views
5

Silverlightアプリケーションのログイン画面では、Caps Lockが切り替えられているかどうかを判断する必要があります。これは、KeyUpまたはKeyDownイベントを処理することで十分ですが、キーが押されていなくてもオン/オフを切り替えることはできますか?Caps LockがSilverlightアプリケーションで切り替わるかどうかを判断する方法

これは、Silverlightアプリケーションの実行中にユーザーがCaps Lockを押さずに、ログイン画面に到達する前にトグルした場合のようなものです。私はまだキャップのロックがオンであることを彼らに警告する必要があります。

Silverlightではアンマネージドコードを処理できないため、次のコードは機能しません。

[DllImport( "user32.dll")] 内部静的extern short GetKeyState(int keyCode);

答えて

4

CAPS LOCKSを検出する方法は、KeyValueとKeyEventArgsのシフトを確認することです。
KeyValueが(たとえば) 'A'でShiftがfalseの場合、CAPS LOCKSはオンです。
最良の方法ではありませんが、how ajax applications has been doing itです。

+0

ありがとうございます。 Silverlight XAMLのコードビハインドのKeyUp/KeyDownイベントでそれを特定する方法はありますか? – Rogan

+0

はい、JavaScriptイベントとSilverLightイベントはかなりスリムです。 コードを取り出してC#に変換してください。 –

+0

良い溶液シェイ+1 –

0

私が知る限り、あなたはできません。あなたは、あなたのアプリから上下に行くキーでピックアップすることができるかもしれませんが、ユーザーがあなたのアプリを離れる場合、どのような状態であったか分からないでしょう。

私はSL3でそれに追加のsupptを気づいていないが、私は特にそれを探していたとは言えない。

0

Silverlightでは、クライアント側でWin32 DLLを呼び出すことはできません。 Capslockキーが押されたかどうかをテストするために、上記のテクニックを使用することはできません。 KeyDownイベントを使用して試してみましたか?システムキーをテストしましたか?私はそれをしていないが、それは愚かです。

+0

はい、KeyDownとKeyUpイベントは正常に動作しますが、Caps Lockが押されているかどうかを確認しようとしています。もし誰かがCaps Lockを私のSilverlightアプリケーションに行く前にトグルすると、私はそれらがトグルされていることを警告する必要があります。 – Rogan

関連する問題