ユーザーがVB.Netテキストボックスに入力すると、キープレスが検出されます(テキストボックスからテキストを読み込むことができないと仮定して)。これは英語で簡単です(e.KeyCharまたはKeys。[A、B、C、...など]を使用して)。ただし、Windowsのデフォルトキーボードを英語からアラビア語またはペルシア語などの別の言語に変更すると、アラビア語またはペルシア語が入力されているにもかかわらず、英語の文字が検出されます。VB.NETで英語以外のKeyPressを検出する
答えて
キーコードは単にキーボードから受信した信号で、OSは現在の入力言語が何であってもこれを解釈します。
最後に入力した文字が特定の言語に属するかどうかをテストする場合は、テキストボックスから文字を直接テストする必要があります(値が正しいUnicode範囲内にあることを確認してください)。
私は、テキストボックス内のその文字の前にその文字を知る必要があるのでしょうか? – Muhammad
キーボードで表示されるペルシア語の文字コードにASCIIのキーコードをマッピングするテーブルを作成すると、これを行うことができます。
VB:
'Create a look-up table
Dim Chars(256) As String
Chars(Asc('Q')) = 'ض';
Chars(Asc('W'))= 'ص';
Chars(Asc('E')) = 'ث';
' and so on...
'Now get it
Dim persianChar As String = Chars(e.KeyValue); 'You have your character
のC#:
//Create a look-up table
char[] chars = new char[256];
chars['Q'] = 'ض';
chars['W'] = 'ص';
chars['E'] = 'ث';
// and so on...
//Now get it
char persianChar = chars[e.KeyValue]; //You have your character
私はこれのようなことを考えていましたが、問題は私が作業しているすべての言語をマップする必要があるということです。何が入力されたのか、どんな言語であるのかを検出する方法はありませんか? – Muhammad
あなたの代わりにKeyPressイベントのKeyDownイベントを使用した場合に事故のこの種だけで容易に説明できます。 KeyDownイベントは仮想のキーを報告します。その名前は元のIBM PCキーボードのレイアウト、英語のレイアウトに基づいています。 Keys
タイプは.NETフレームワークでそれらを宣言します。
さらに、KeyDownイベントは、選択されたキーボードレイアウトを使用してWindowsによって処理されます。基礎となるwinapi関数はToUnicodeEx()です。それには多くの引数があり、重要なのはlpKeyState(修飾キーとデッドキー状態を追跡します)とdwhkl(選択されたキーボードレイアウト)です。マシン上のキーボードレイアウトを変更すると、最後の引数が変更されます。キーストロークがタイピングキーを表す場合、KeyPressイベントをトリガーするe.KeyCode引き数は、utf-16ユニコードコードポイントです。
自分でKeyDownイベントを解釈しようとしないでください。 Ctrl + F1のようなショートカットキーストロークを検出するには、ProcessCmdKey()をオーバーライドする必要があります。常にKeyPressイベントを使用してキーを入力します。
説明のためにありがとう手、しかし私は恐れているそれのほとんどは私の頭の上に行きました;私はそれを私の理解のレベルに引き下げる必要があるのではないかと心配しています。 私が理解したことは、ToUnicodExを使用すると、キーボード言語を検出して、プレスキーをキーボード言語の文字にマップできることです。 何行かお願いしますか? – Muhammad
「手」が私の頭にも行きました。 KeyPressイベントを使用します。 –
- 1. 英語以外の形式を検出する
- 2. テキストが英語以外であるかどうかの検出
- 3. zingchart英語を英語以外の数字に変換する
- 4. インポート英語以外のシェープファイル
- 5. Androidシミュレータの英語以外の言語
- 6. 英語以外の言語のPython SL4A
- 7. 英語以外の言語のPOS
- 8. OSが英語以外の場合にアプリケーションコントロールを英語で表示する
- 9. 英語以外の言語でsmsを送信する方法
- 10. 英語以外のキーを持つアンドロイドエミュレータ
- 11. 英語以外のファイルを読む
- 12. 英語以外の言語のフォントを設定する
- 13. 英語以外のWindowsのSQLLocalDBのコマンドライン?
- 14. 英語以外の文字のカスタムフォント
- 15. 英語以外のC#WritePrivateProfileString()の値
- 16. 英語以外の文字はHtlmCleaner
- 17. preg_splitを英語で分割した文字列(英語以外の文字)
- 18. (英語以外の)コメントを英語に自動的に翻訳しますか?
- 19. Entity Frameworkデータベース(英語以外)DB
- 20. Pythonで英語以外の文字を変換する
- 21. Androidで英語以外の文字を入力する
- 22. Rails 3:英語以外の文字でcsvファイルをアップロードする
- 23. 英語以外の言語での入力
- 24. 英語以外の言語でのLevenshtein距離
- 25. Facebookのアプリケーションopen graphアクションが英語以外の言語で
- 26. 英語以外のファイル名と英語以外のテキストからのC++の読み込み
- 27. SolrNetによる英語以外の言語のサポート
- 28. 英語以外の外国語の変数名は使用できますか?
- 29. ボイラーパイプを使用して英語以外の記事を抽出する
- 30. EditTextで英語以外の他の言語の使用を禁止する
キーコードが検出されました。これらは、OSによって異なる言語として解釈されます。 – Oded