私はSystem.Windows.Input.KeyEventArgs
e変数を持っています。私は本当のcharを取得したい。たとえば、}
キーボードのボタンを押します。通常は文字列を返します が、 charoem..
を取得したいです。}
実行する方法 ?
[編集] TextBox でこれを使用します。
私はSystem.Windows.Input.KeyEventArgs
e変数を持っています。私は本当のcharを取得したい。たとえば、}
キーボードのボタンを押します。通常は文字列を返します が、 charoem..
を取得したいです。}
実行する方法 ?
[編集] TextBox でこれを使用します。
この投稿を参照してください... WPF/C# の異なるロケール キーボードで「#」文字をキャプチャする方法は?
GetCharFromKey(Key key)
キーボードイベント引数のキーからロケール固有の文字を取得するユーティリティ関数が呼び出されます。
非常に便利。
それだけで使用できる e.Key プロパティがあります。msdn へのリンクは次のとおりです。
編集:
実際の文字が必要だとは知りませんでした。ここで見ることができます WPF では Win32 API を使用してそれを行うことができますが、Silverlight ではかなり難しいようです。また、KeyInterop.VirtualKeyFromKey を見ることもできます。WPF Key 列挙を WinForms Keys 列挙に変換すると、さらに多くの情報が得られます。私は解決策を試していないので、それらのいずれかが機能するかどうかはわかりません。
最後にもう 1 つ。KeyDown/Up イベントからの文字が必要なのはなぜですか? 代わりに TextChanged イベントを使用できないのですか? 可能であれば、正確な文字を取得する方がはるかに簡単です。
KeyDown や KeyUp ではなく、KeyPress イベントでその処理を行う必要があります。KeyEventArgs は、対応する文字ではなく、実際に押されたキーを示します。一部のキーには、関連付けられた文字がありません。ただし、KeyPress イベントは文字のないキー (ctrl、up など) に対しては発生しないため、KeyPressEventArgs には関連付けられた文字があります。
char c = (char)e.KeyValue;
これは押されたキーを大文字または数字として返しますこれは特殊文字では機能しません