C# Windows 窗体:如何捕获 Capture 函数、箭头和箭头导航键

发布于 2024-10-22 22:10:26 字数 162 浏览 6 评论 0原文

我正在尝试捕获功能键 F1 到 F12 & 4 个方向键和首页、插入、删除、结束、向上翻页和向下键。怎么办????

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
}

i am trying to capture Function keys F1 to F12 & 4 Arrow Keys & Home, Insert, Delete, End, Page Up & Down Keys. How To ????

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不醒的梦 2024-10-29 22:10:26

重写表单的 ProcessCmdKey() 方法。在将键盘消息分派到具有焦点的控件之前,它会直接从消息循环中调用。这就是为什么重写 WndProc() 不起作用的原因。

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
        if (keyData == (Keys.Control | Keys.F)) {
            MessageBox.Show("What the Ctrl+F?");
            return true;
        }
        return base.ProcessCmdKey(ref msg, keyData);
    }

从技术上讲,您还可以使用 KeyPreview = true 覆盖表单的 OnKeyDown 方法,但这是一个丑陋的 VB6 不合时宜的做法。

Override the ProcessCmdKey() method of the form. It gets called straight from the message loop, before the keyboard message is dispatched to the control with the focus. Which is why overriding WndProc() doesn't work.

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
        if (keyData == (Keys.Control | Keys.F)) {
            MessageBox.Show("What the Ctrl+F?");
            return true;
        }
        return base.ProcessCmdKey(ref msg, keyData);
    }

Technically, you can also override the form's OnKeyDown method with KeyPreview = true, but that's an ugly VB6 anachronism.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文