KeyUpとKeyDownイベントを使用してキーボード入力を読み込もうとしましたが、Winformに他のコントロールを配置すると、キーは読み込まれません。キーが読み取られるようにするにはどうすればよいですか?Winformでキーボード入力を読み取るにはどうすればよいですか?
答えて
フォームにKeyPreview = true
を設定して、キーボードイベントを捕捉することができます。
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.A)
e.SuppressKeyPress = true;
}
Aが押された場合は、キーボードイベントやドロップを受ける愚かなサンプル:
はあなたが理解できるようにを編集しました。
フォーカスがテキストボックスにある場合は、テキストは書き込まれますが、A !!では表示されません。
編集されました:このコードはVB.NETの例から取得しました。
ユーザーコントロールで、テキストボックスの "Keypress"イベントを使用して、 "usercontrolイベント"を発生させます。
このコードは、カスタムユーザーコントロールに次のようになります。
'Declare the event
Event KeyPress(KeyAscii As Integer)
Private Sub Text1_KeyPress(KeyAscii As Integer)
RaiseEvent KeyPress(KeyAscii)
End Sub
参照:http://msdn.microsoft.com/en-us/library/system.windows.forms.form.keypreview.aspx
はKeyPreview = true
を設定し、KeyUp
とKeyDown
は、すべてのキーボード入力を認識します。
marcoは、KeyPreviewをtrueに設定すると、キーイベントをコントロールだけでなくフォーム全体でキャッチすると言います。
KeyPressイベントを使用します。KeyUp/Downは、コードよりもフレームワークの方が多くあります。 KeyDownは、キーを無効にしたい場合などに便利です。数字のみのフィールドなどです。一般的に、KeyPressはあなたの後ろにあるものです。
キーストロークが他のコントロールに伝播しないようにするには、KeyPressEventArgs.Handled = trueを設定します。
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.keypress(v=VS.90).aspx
あなたは、イベントハンドラを配線したことがありますか?あなたはまた、プロパティでこれを行うことができます
MyForm.KeyDown += MyHandler;
を使用すると、キーボード入力を読み取るために、フォーム自体を探しているなら、あなたはすでにからあなたの答えを持っている...イベントアイコンをクリックしてください...
私は上下両方が必要です。私は押されているキーを視覚化したいので、何かがkeyUpとkeyDownの両方で発生する必要があります。 – Bildsoe
ああそうです... KeyUp/Downはちょうど同じように動作します。あなたはイベントハンドラを配線しましたか?イベントセクションのプロパティペインまたはコードのいずれか? MyForm.KeyDown + = MyEventHandler; – iDevForFun
はいイベントハンドラを配線しました。それは動作しますが、フォーム上にユーザーコントロールを配置しても機能しなくなります。 – Bildsoe
ペイン他の特派員。私は、フォーム上の他のコントロールやユーザーコントロールにキー処理を追加する可能性があるため、この寄稿を追加しています。私の記事Exploring Secrets of .NET Keystroke Handlingは、DevX.comに公開されています(登録は必要ですが無料です)。さまざまなキー操作のフックやイベントがどのように、また、なぜそのように機能するのかを包括的に説明します。さらに、この記事には無料ダウンロード用の「キーストロークサンドボックス」ユーティリティが含まれており、どのコントロールがどのキー操作イベントを受け取っているかを実際に確認することができます。ここで
は、あなたの食欲を満たすための記事から1つの図は、次のとおりです。あなたがコントロールがある場合、それは空白のフォームと機能していないために働く
- 1. 入力時に入力を読み取るにはどうすればよいですか? - Python
- 2. ライブ入力でキーボード入力を受け入れるにはどうすればよいですか?
- 3. ノードで2つの入力を次々に読み取るにはどうすればよいですか?
- 4. キーボードからGNU Octaveでユーザー入力を取得するにはどうすればよいですか?
- 5. Tensorflowで可変長の1D入力を読み取るにはどうすればよいですか?
- 6. Javaで書式付き入力を読み取るにはどうすればよいですか?
- 7. 入力データをフォームで読み取るにはどうすればよいですか?
- 8. JSpinnerのキーボード入力とマウス入力を無効にするにはどうすればよいですか?
- 9. ファイルからの入力を正しく読み取るにはどうすればよいですか?
- 10. 反応のテキスト領域から入力を読み取るにはどうすればよいですか?
- 11. Pythonでバックグラウンドスレッドからキーボード入力を読み取る方法は?
- 12. 文字列入力の最初の文字を読み取るにはどうすればよいですか?
- 13. テキストヘッダを含むソケット入力ストリームからバイナリファイルを読み取るにはどうすればいいですか?
- 14. Javaでファイルから行ごとに入力を読み取るにはどうすればよいですか?</p> <p>ファイルから行ごとにJavaで入力を読み取るにはどうしたらよいですか?
- 15. Androidでユーザー入力を読むにはどうすればよいですか?
- 16. javascriptでJSESSIONIDを読み取るにはどうすればよいですか?
- 17. MapReduceでバイナリ入出力ファイルを読み書きするにはどうすればよいですか?
- 18. Javaでは、入力リーダーがプリントライターから正しいデータを読み取るようにするにはどうすればよいですか?
- 19. Zookeeperトランザクションログを読み取るにはどうすればよいですか?
- 20. ERDのブリッジエンティティを読み取るにはどうすればよいですか?
- 21. CloudKitエラーを読み取るにはどうすればよいですか?
- 22. iPython 5で色を読み取れるようにするにはどうすればよいですか?
- 23. Rustでブロックせずに子プロセスの出力を読み取るにはどうすればよいですか?
- 24. キーボード入力でThree JSキューブを移動するにはどうすればよいですか?
- 25. C++で入力ファイルを文字列配列に読み込むにはどうすればよいですか?
- 26. Clojureでバッファリングされていないキーボード入力を読み取る
- 27. ArduinoでATコマンドの出力を読み取るにはどうすればよいですか?
- 28. Windows 10のキーボードからSegoe MDL2 Assets文字を入力するにはどうすればよいですか?
- 29. 実行中にスペースを読み取れるようにするにはどうすればよいですか?
- 30. コンソールで1つのキー入力を待って読み込むにはどうすればよいですか?
もしかして? – Yuan
はい、以下の回答に書かれているように、ボタン、テキストボックスなどのコントロールで動作しますが、ユーザーコントロールを配置すると機能しなくなります。 – Bildsoe
これは動作しません、キーボード入力は、フォーカスを持つコントロールに移動します。あなたは本当に何をしようとしていますか? –