C#、WinForms : What would prevent KeyDown events from chaining up from focused control up to main Form? 只有叶控件 KeyDown 对我有用

标签 c# winforms keyboard-events keydown

据我了解,当按下键盘按钮时,它应该为具有焦点的控件调用 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/

相关文章:

c# - DynamoDB for C# 中 SaveAsync 任务的问题

c# - 为什么等待这个错误任务不抛出异常?

C# - 无法从数据库获取值

c# - 注册表中的字体链接

javascript - 如何 Hook IE键盘事件?

c++ - 如何使用输入子系统生成击键事件

c# - Socket c# 通过互联网聊天?

c# - 在 FlowLayoutPanel 内部使用时控件重叠

java - 如何从 javafx 中的按钮内部获取按键事件

c# - 工具窗口的永久焦点