9

我正在制作一个 Windows 应用程序(WinForms),并希望我的应用程序在用户按下 F5 时调用一个方法 - 无论用户在做什么,这都应该有效,但他们必须使用该程序 - 我不想使用全球挂钩 - 有什么想法吗?

4

3 回答 3

18

在主窗体上覆盖窗体的ProcessCmdKey并查找 F5。

protected override bool ProcessCmdKey (ref Message msg, Keys keyData)
{
    bool bHandled = false;
    // switch case is the easy way, a hash or map would be better, 
    // but more work to get set up.
    switch (keyData)
    {
        case Keys.F5:
            // do whatever
            bHandled = true;
            break;
    }
    return bHandled;
}
于 2009-12-26T20:44:22.973 回答
4

查看该Form.KeyPreview属性,它将允许您在允许单个元素处理它们之前在表单级别捕获所有KeyDown,KeyUp和事件。KeyPress

MSDN Form.KeyPreview 页面

于 2009-12-26T20:39:34.950 回答
3

如果您只有一个可以拥有焦点的表单,您可以KeyPreview将该表单的属性设置为true并处理该KeyPress事件。

KeyPreview属性将导致窗体接收所有按键,无论窗体上的哪个控件具有输入焦点。

于 2009-12-26T20:38:23.593 回答