我正在运行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,进程选项卡。开始逐个关闭进程,直到找到麻烦制造者。 –