表单不响应 KeyDown 事件

2023-11-23

我已经在 Windows 窗体项目上工作了一段时间,并且决定尝试使用键盘快捷键。经过一番阅读后,我认为我必须编写一个事件处理程序并将其绑定到表单的 KeyDown 事件:

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Control && e.Alt && e.KeyCode == Keys.O)
    {
        MessageBox.Show("Ctrl+Alt+O: magic!");
    }
}

I did that the good ol' way of opening the Properties panel of the Visual Studio designer, then double-clicking on the KeyDown event of my form to generate the Form1_KeyDown event handler. But on testing my application, the form doesn't respond at all to the Ctrl+Alt+O keyboard shortcut. The Visual Studio designer did generate the code to bind the event handler to the form though:

private void InitializeComponent()
{
    // ...

    this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown);

    // ...
}

所以我尝试添加一个Console.WriteLine()调用处理程序来检查它是否被调用,但也没有运气。

另外,我尝试在事件绑定调用上设置断点(如上所示),发现程序很好地到达了该断点。但是我在方法定义本身中设置的任何断点都永远不会到达。

为了确保我正确执行了前几个步骤,我尝试使用以下命令重复它们:

  • A new form in the same solution.
    Same issue: the form doesn't respond when I press my Ctrl+Alt+O keyboard shortcut and the debugger isn't even stepping into the event handler. Tried this again and it works.

  • 全新的 WinForms 解决方案。
    它工作得很好:出现消息对话框(Console.WriteLine()通话也有效)。

所以我在这里很迷路。是什么阻止了该项目中的所有表单接收 KeyDown 事件?


您的表单是否将 KeyPreview 属性设置为 true?

Form.KeyPreview 属性

获取或设置一个值,该值指示表单是否接收密钥 在事件传递给具有焦点的控件之前发生的事件。

http://msdn.microsoft.com/en-us/library/system.windows.forms.form.keypreview.aspx

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

表单不响应 KeyDown 事件 的相关文章

随机推荐

  • 如何将文件发送到浏览器进行下载?

    当客户端请求文件时 我使用以下代码发送它 public static Result download String file File file getRealFile file return Ok file 但我发现浏览器不会下载它 而是
  • 如何知道使用了什么 JAXB 实现?

    我使用 MOXy 作为 JAXB 实现 但不知何故我想在某些管理屏幕上 动态 显示实现名称 例如 Moxy 和版本号 我如何从 JAXB 检索该信息 Cheers 您可以执行类似以下操作来找出正在使用的 JAXB impl import j
  • 对回形针中的视频/图像使用单个附件

    我正在使用回形针上传文件 视频和图像 视频和图像使用相同的附件 源 class Media lt ActiveRecord Base belongs to memory validates attachment presence sourc
  • 分析 wav 并绘制图表

    我正在尝试从 wav 文件中打印出波形 但我有点不知道我应该采取多长的样本 this is what I would love to archieve without the colors 因此 为了读取我的数据 我使用以下代码 first
  • 使用 new 初始化 C# 数组与使用文字初始化

    简单的简短问题 到底有什么区别 int intarray new int 2 1 2 and int intarray2 4 5 6 就像 新 到底做什么 你真的需要它吗 我猜它只是分配内存 或者什么 抱歉 我对 C 完全陌生 在学习过程中
  • Django 空字段后备

    我有一个保存用户地址的模型 这个模型必须有first name and last name字段 因为人们想为收件人设置地址 例如他的公司等 我想要实现的是 If the first name last name地址中的字段已填写 仅返回该字
  • Python - 等待变量更改

    我有一个 Python 脚本 可以打开 Twitter API 的 websocket 然后等待 当事件通过 amq 传递给脚本时 我需要打开一个新的 websocket 连接并立即地新连接注册后立即关闭旧连接 它看起来像这样 stream
  • Python argparse:组合“choices”、“nargs”和“default”时类型不一致

    我有以下 python 程序 usr bin env python import argparse parser argparse ArgumentParser parser add argument arg choices foo bar
  • 使用javascript获取div内第一个输入的id

    HTML div div
  • Rails CSRF 保护 + Angular.js:protect_from_forgery 让我在 POST 上注销

    If the protect from forgeryapplication controller 中提到了选项 然后我可以登录并执行任何 GET 请求 但在第一个 POST 请求时 Rails 会重置会话 从而使我退出 我转动了prote
  • 如何将多个 .net 程序集合并为一个程序集?

    我有一个包含大约 10 个程序集的 net 应用程序 如果将它们作为一个组件组合在一起 那就太好了 我该怎么做 我猜想类似于 Java 应用程序的 jar 文件 Try ILMerge NuGet包here
  • 如何使用 Cocoa 和 Python (PyObjC) 创建状态栏项目?

    我在 XCode 中创建了一个全新的项目 并在我的 AppDelegate py 文件中包含以下内容 from Foundation import from AppKit import class MyApplicationAppDeleg
  • 使用 POST 请求 golang 上传文件

    我是 golang 新手 我正在尝试编写一个函数 为我正在编写的机器人上传带有发布请求的文件到电报 我尝试过使用这段代码 但我从电报中得到的错误是Bad Request there is no photo in the request 我在
  • OpenCV:从USB摄像头捕获的黑色图像

    我正在尝试使用 opencv 从 USB 摄像头捕获图像帧 然而我总是得到一个黑框 我已经阅读了很多有关此问题的帖子并尝试了所有建议 但对我来说没有任何作用 我开始使用这里讨论的代码 http opencv users 1802565 n2
  • 在 LinearLayout 中设置 textview 的宽度

    我正在使用列表视图的标题 ListView 标题有三列 说a b c 我使用两个 LinearLayouts 来设计 ListView 标题 如下所示
  • 新渲染元素的动画,但页面加载时不动画

    我订阅了 Firebase 实时数据库 这样当我向它提交某些内容时 它会立即在视图中呈现 而不需要 jQuery 或 ajax 我想对这些元素的渲染进行动画处理 这样当一个新元素添加到 DOM 时 它的div s background co
  • Swift 中的十六进制/二进制字符串转换

    Python 有两个非常有用的库方法 binascii a2b hex keyStr 和 binascii hexlify keyBytes 我在 Swift 中一直在努力解决它们 Swift 中有什么现成的东西吗 如果没有 又该如何实施呢
  • React类中的成员变量通过引用“共享”

    当我创建一个反应类的多个实例 通过在同一个类上使用 React createElement 时 一些成员变量在实例之间共享 数组和对象是共享的 字符串和布尔值等不是共享的 对我来说 这感觉可怕 可怕 错误 这是一个错误还是有其他方法可以做我
  • java中如何输入BigInteger类型

    当我尝试获取 Integer 类型的输入时 我只需要做下面的代码 Scanner sc new Scanner System in int N sc nextInt 但当涉及到 BigInteger 时 我不知道该怎么办 我该如何读取用户的
  • 表单不响应 KeyDown 事件

    我已经在 Windows 窗体项目上工作了一段时间 并且决定尝试使用键盘快捷键 经过一番阅读后 我认为我必须编写一个事件处理程序并将其绑定到表单的 KeyDown 事件 private void Form1 KeyDown object s