2

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

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

1 回答 1

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 时代错误。

于 2011-03-19T13:38:21.640 回答