私の.Netアプリケーションでは、キーボードイベントを受け取ると予想される特定のフォーム/コントロールの問題が続いています。私のデバッグは、すべてのコントロールでブレークポイントを設定したり、誰が持ってはいけないキーボードイベントを食べたかを見たりするなど、洞窟人をはるかに超えて進歩していません。より良い方法が必要です - そこには、キーボードのイベント処理を追跡するのに役立つツールがありますか?私のキーボードイベントを食べているコントロールを特定する方法
答えて
まず、プロパティウィンドウ(またはデザイナファイル)をチェックして、イベントハンドラが実際にイベントに接続されていることを確認します。
ありがとうございますが、私はそれほどノブのものではありません=) –
よく聞いてください。あなたは洞窟人だと言っていましたので、私は基本的に考え始めました; o) –
通常、フォームはキープレスイベントを処理します。スタックトレースを監視するだけなのでツールはありません。最も良いアイデアはフォームのkeypressイベントでトレースステートメントを作成し(ブレークポイントを追加して右クリックし、「ヒット時」に移動)、forms.keyeventargsとsenderオブジェクトの情報を調べることです。
その他の重要な注意事項:非文字キー(ページダウン、ページアップなどを含む)は、キー押しイベントを発生させず、キーダウンおよびキーアップのみを発生させ、キー押しイベントはフォームによって「飲み込まれる」
e.Handled = true;
または
e.SuppressKeyPress = true;
を設定し、私はまた、あなたのイベントをフックするデザイナー/プロパティウィンドウを使用することをお勧めのAddHandler(VB)を使用するか、+ =(C#)BECAはありませんより複雑なフォームでは、イベントハンドラを共有する多くのコントロールのシナリオを持ち、実行時にハンドラを動的に指定します。
プロパティウィンドウを使ってイベントハンドラをアタッチしても、簡単にイベントハンドラを共有することができます。 –
Spy ++を使用すると、Visual Studioのフルバージョン(Expressエディションまたは他のものではない)を使用していると仮定します。 Spy ++を起動すると、アプリケーションのルートウィンドウが見つけられます(Spy ++には便利な検索>ウィンドウの検索があります)。次に、Windowsのツリービューでルートウィンドウを右クリックし、メッセージを選択します。これにより、ウィンドウのすべてのメッセージの監視を開始するメッセージウィンドウが表示されます。入力を開始し、WM_KEYDOWNなどを確認します。まだキーが表示されない場合は、メッセージングオプションに移動し、「同じプロセスのWindows」をチェックします。この時点で、プロセス内のすべてのキー押しイベントを監視できるはずです。 WM_KEYDOWN(または同様の)メッセージを右クリックし、プロパティに移動します。プロパティでは、メッセージを処理したウィンドウのハンドルを表示し、それをクリックすると、Windowsのツリービューで強調表示されます。ハイライトされたウィンドウを右クリックしてハイライトを選択するだけで、フォーム上にあるコントロールを見ることができます。
- 1. コントロールに割り当てられているスタイルを特定する方法
- 2. 安全でないWebパーツ/コントロールを特定する方法
- 3. CCRenderTextureが私の記憶を食べる
- 4. qt5私が挿入した空白をすべて食べる
- 5. すべてのコントロールの既定のツールチップスタイルを定義する方法
- 6. コントロールのOnExitが別のウィンドウを表示するときに新しいコントロールのmouseupイベントを食べる
- 7. UIScrollViewがスワイプジェスチャーを食べているSwift
- 8. 特定のモックインスタンスのすべてのメソッドをスタブする方法
- 9. 一番上の親コントロールを特定する方法は?
- 10. スーパーインポーズを手掛けたときにチャート内のすべてのコントロールを特定する方法は?
- 11. すべてのグローバル一時テーブルを特定する方法
- 12. NSZombiesは私のアプリの脳を食べています!
- 13. as3特定のキーボードイベントを発送するには
- 14. boost :: lockfree :: queueは私のCPUを食べています
- 15. iOSでキーボードイベントを監視する方法
- 16. javascript:キーボードイベントをデバッグする方法
- 17. キーボードイベントをマウスイベントに変更する方法
- 18. キーボードイベントでホバーをシミュレートする方法
- 19. WPF:特定のコンテナ内のすべてのコントロールのフォントを変更する
- 20. 特定のコントロールタイプのコンポジットからすべてのコントロールを取得する
- 21. どのようにすべてのコントロールを通過し、特定のコントロールを操作するのですか?
- 22. 日食の開いているウィンドウを閉じる方法
- 23. 私は、特定のページ上に存在するすべてのコントロールを見つける保証は、ページ
- 24. スネークゲーム - 食べ物を食べるが、別の(javascript)
- 25. フォームのすべてのコントロールを有効にする方法は?
- 26. フォーム内のすべてのコントロールを拡大する方法
- 27. コントロール内のすべてのアイテムをキャプチャする方法は?
- 28. 特定のコントロールのZIndexを一番上に設定する方法
- 29. 特定の動的コントロールを見つけて値を得る方法
- 30. 設定方法ユーザーコントロールのすべてのコントロールの検証?
どのキーボードイベントですか? –
KeyPress、KeyDown、PreviewKeyDown –
どのキーですか? –