据我了解,当按下键盘按钮时,它应该为具有焦点的控件调用 KeyDown 事件。然后,父控件的 KeyDown,依此类推,直到到达主窗体。除非 - 沿着链条,其中一个 EventHandlers 做了:
e.SuppressKeyPress = true;
e.Handled = true;
在我的例子中,KeyDown 事件永远不会到达主窗体。 例如,我有表单 -> 面板 -> 按钮。
Panel 不提供 KeyDown 事件,但它不应该阻止它到达主窗体,对吗?
现在,作为解决方法,我将每个控件都设置为调用我编写的事件处理程序。我基本上是在尝试阻止 Alt-F4 关闭应用程序,而是将其最小化。
最佳答案
[编辑]
如果您想捕获 Alt-F4,那么在控制级别尝试是没有意义的,因为该击键由应用程序处理 - 参见 How to Disable Alt + F4 closing form?
关于C#、WinForms : What would prevent KeyDown events from chaining up from focused control up to main Form? 只有叶控件 KeyDown 对我有用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2838292/