在我的.Net應用程序中,我一直遇到特定窗體/控件的問題,我期望收到鍵盤事件實際上沒有收到它。我對此的調試並沒有超出穴居人的範圍,例如在我的所有控件中設置斷點,並查看誰吃了不應該有的鍵盤事件。必須有更好的方法 - 有沒有工具可以幫助我追蹤鍵盤事件處理?如何確定哪個控件正在吃我的鍵盤事件
2
A
回答
0
我會做的第一件事是我會檢查屬性窗口(或在設計器文件),以確保事件處理程序確實掛鉤到事件。
0
通常,表單將處理按鍵事件。沒有工具,因爲它只是監視你的堆棧跟蹤。最好的想法是在你的表單按鍵事件中添加一個跟蹤語句(添加一個斷點和右鍵單擊,轉到「When Hit」),然後查看forms.keyeventargs和sender對象中的信息。
其他需要注意的重要事項:非字符鍵(包括下一頁,向上翻頁等)不會引發按鍵事件,它們只會引發按鍵和按鍵事件,按鍵事件會被表單「吞噬」設置
e.Handled = true;
或
e.SuppressKeyPress = true;
我也不建議使用設計/屬性窗口中以關聯的事件,使用的AddHandler(VB)或+ =(C#)貝科在更復雜的表單中使用時,您將擁有許多控件共享事件處理程序的場景,並在運行時動態指定處理程序。
0
假設您使用Visual Studio的完整版本(不是Express版本或其他),請使用Spy ++。當您啓動Spy ++時,找到您的應用程序根窗口(Spy ++有一個方便的搜索>查找窗口菜單項來幫助),然後右鍵單擊Windows樹視圖中的根窗口並選擇消息。這應該會引導您進入消息窗格,該窗格將開始監視窗口的所有消息。開始鍵入並檢查WM_KEYDOWN等。如果仍然沒有看到您的按鍵進入消息選項並檢查「Windows相同過程」。此時,您應該能夠監視進程中的所有按鍵事件。右鍵單擊WM_KEYDOWN(或類似的)消息並轉到屬性。在屬性中,應該顯示處理消息的窗口的句柄,然後單擊它將在Windows樹視圖中突出顯示它。現在,您只需右鍵單擊突出顯示的窗口並選擇突出顯示,即可查看窗體上的哪個控件。
相關問題
- 1. 如何確定哪個控件觸發了一個事件?
- 2. 確定鍵盤在非鍵盤事件的方法調用
- 3. Android:如何確定正在使用哪個鍵盤
- 4. 確定Linux的鍵盤事件設備
- 5. 如何正確處理快捷鍵和鍵盤事件?
- 6. 如何從X11監控鍵盤事件
- 7. 如何捕獲鍵盤事件來自哪個鍵?
- 8. Xlib控制鍵盤事件
- 9. 如何確定觸摸哪個控件?
- 10. 如何確定哪個用戶控件正在調用命令
- 11. 圖像控件鍵盤事件WPF,UWP
- 12. 綁定javascript鍵盤事件
- 13. 如何確定哪些控制window.onbeforeunload在javascript導致了事件
- 14. 鍵盤事件
- 15. 鍵盤事件
- 16. 鍵盤事件
- 17. 在鍵盤事件上獲取正確的字符
- 18. 我在哪裏添加鍵盤控件到pygame中的精靈?
- 19. Javascript幾個鍵盤事件
- 20. 我在哪裏處理特定mfc編輯控件的「Enter」鍵事件?
- 21. 如何確定哪個窗體控制VB.net上的鍵盤輸入
- 22. 觸發鍵盤事件,WebKit的鍵盤不會觸發事件
- 23. C++控制檯鍵盤事件
- 24. As3鍵盤事件
- 25. 鍵盤android事件?
- 26. AS3鍵盤事件
- 27. Godot鍵盤事件
- 28. Flex鍵盤事件
- 29. 鍵盤事件java
- 30. GLUT鍵盤事件
哪個鍵盤事件? – 2009-06-17 20:54:18
KeyPress,KeyDown,PreviewKeyDown – 2009-06-17 20:57:07
對於哪些鍵? – 2009-06-17 20:59:16