我已经在承载所有控件的Form类中重写了ProcessCmdKey事件,并且在移至任何Microsoft应用程序之前,它从未在WinForms应用程序中触发。
当用户在我的WinForms应用程序前面拥有Microsoft应用程序(例如Edge或计算器)时,有时该窗体会移到最前面以引起用户的注意。用户可以按空格键来“单击”表单上的按钮。发生这种情况时,Microsoft应用程序将响应所按下的键,而不是响应表单本身(例如,Edge将在后台向下移动页面)。
使用Chrome或任何其他非Microsoft应用程序时,我无法重现此错误。
发生需要用户注意的事件时,它将运行此代码
this.TopMost = true;
和
this.Button1.focus();
日志显示在用户按下任何键之前,Button1具有焦点。
我希望这对您很清楚,并且很乐意回答您的任何问题。
非常感谢您!