2009-04-09 10 views
5

Im Anmeldebildschirm einer Silverlight-Anwendung muss ich feststellen, ob die Feststelltaste aktiviert ist. Das ist einfach genug, wenn Sie das KeyUp- oder KeyDown-Ereignis behandeln, aber wie bestimmt man, ob es ein- oder ausgeschaltet ist, auch wenn keine Taste gedrückt wurde?Wie kann festgestellt werden, ob die Feststelltaste in einer Silverlight-Anwendung umgeschaltet wird?

Der Grund, warum ich dies tun möchte, ist, wenn der Benutzer während der Ausführung der Silverlight-Anwendung nicht die Feststelltaste drückt, sondern sie vor dem Anmeldebildschirm umschaltet? Ich muss sie immer noch warnen, dass Caps Lock eingeschaltet ist.

Anscheinend Umgang mit nicht verwaltetem Code ist in Silverlight nicht möglich, so das folgende nicht funktioniert.

[DllImport ("user32.dll")] intern statisch extern kurz GetKeyState (int keyCode);

Antwort

4

Der Weg zur Erkennung von CAPS LOCKS besteht darin, den KeyValue und die Shift von KeyEventArgs zu überprüfen.
Wenn der KeyValue (zum Beispiel) 'A' ist, aber die Verschiebung falsch ist, dann ist die CAPS LOCKS aktiviert.
Nicht der beste Weg, aber seine how ajax applications has been doing it.

+0

Vielen Dank dafür. Gibt es eine Möglichkeit, das Ereignis KeyUp/KeyDown im Code hinter Silverlight XAML zu bestimmen? – Rogan

+0

Ja, das JavaScript-Ereignis und das SilverLight-Ereignis sind sehr viel dünner. Nimm einfach den Code und übersetze ihn in C#. –

+0

Gute Lösung Shay +1 –

0

Soweit ich weiß kann man nicht. Möglicherweise können Sie den Schlüssel von Ihrer App aus hoch- und herunterfahren, aber Sie wissen nicht, in welchem ​​Status er sich befand, wenn die Nutzer Ihre App verlassen.

Ich habe keine zusätzliche Unterstützung in SL3 bemerkt, aber ich kann nicht sagen, dass ich besonders danach gesucht habe.

0

Silverlight unterstützt das Aufrufen von Win32-DLLs auf der Clientseite nicht. Sie können also die obige Technik nicht verwenden, um zu testen, ob die Feststelltaste gedrückt ist. Haben Sie versucht, das KeyDown-Ereignis zu verwenden und auf Systemschlüssel zu testen? Ich habe das nicht getan, aber es ist eine Ahnung.

+0

Ja, KeyDown und KeyUp Ereignisse funktionieren gut, aber ich versuche festzustellen, ob Caps Lock aktiviert ist, nicht, wenn es gedrückt wird. Wenn jemand die Feststelltaste vor dem Aufruf meiner Silverlight-Anwendung wechselt, muss ich sie warnen, dass sie eingeschaltet ist. – Rogan