我正在運行VS 2008並在Windows 7框中構建我的應用程序。主窗體/窗口都有一個KeyDown
事件處理程序,它遵循:VB.Net中KeyDown事件觸發當沒有按鍵時
Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
MsgBox("control = " + e.Control.ToString + ", shift = " + e.Shift.ToString + ", e.Keycode = " + e.KeyCode.ToString)
當我建立它並在VS運行它,它似乎運行正常。消息框顯示控制和換檔鍵的狀態以及按下的鍵的鍵碼。但是,如果我在主窗體打開後立即執行可執行文件並在XP上運行它(都使用.Net Runtime 3.5),則會出現消息框。基本上,「KeyDown」事件似乎是在沒有任何按鍵被按下的情況下觸發的。該消息框返回:"control = False, shift = False, e.Keycode = None"
。
這怎麼可能? keyDown
事件如何被觸發,當沒有按鍵被按下(由消息框中包含的輸出確認?)
任何關於可能發生什麼或我如何診斷XP盒上的這種情況的建議,因爲它確實沒有Visual Studio嗎?
更新我試着創建一個全新的項目,其中只有「form1」,並且這個唯一的代碼是keyDown事件處理程序。它只是打開一個空白窗口,並按下按鍵彈出消息框。它在Win 7盒子上按預期工作,但當我將可執行文件移動到XP盒子時,它立即彈出打開消息框而不按任何鍵。很奇怪。
更新...我嘗試創建一個全新的項目,其中只有「form1」,並且這背後的唯一代碼是keyDown事件處理程序。它只是打開一個空白窗口,並按下按鍵彈出消息框。它在Win 7盒子上按預期工作,但當我將可執行文件移動到XP盒子時,它立即彈出打開消息框而不按任何鍵。很奇怪。 – GregH
不要添加評論以進一步解釋,而是更新原始問題 –
開始+運行,Taskmgr.exe,進程選項卡。開始逐個關閉進程,直到找到麻煩製造者。 –