【问题标题】:C# Windows Form: How to capture Capture Function, Arrow & Navigation KeysC# Windows 窗体:如何捕获捕获功能、箭头和导航键
【发布时间】:2011-03-19 10:19:06
【问题描述】:

我正在尝试捕获功能键 F1 到 F12 和 4 个箭头键和 Home、Insert、Delete、End、Page Up 和 Down 键。怎么办??

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

【问题讨论】:

标签: c# visual-studio-2010 special-characters keyevent


【解决方案1】:

覆盖表单的 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 时代错误。

【讨论】:

    猜你喜欢
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 2012-01-27
    • 2014-04-28
    相关资源
    最近更新 更多