在C#中添加F5热键

joe*_*joe 8 c# hotkeys

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

Joh*_*ler 15

覆盖主窗体上的窗体的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;
}
Run Code Online (Sandbox Code Playgroud)

  • 你可能想在switch中添加一个**default**case,让基类看一下键而不是只返回false:`default:return base.ProcessCmdKey(ref msg,keyData);` (4认同)

Joe*_*oey 4

如果只有一个窗体可以获得焦点,则可以KeyPreview将该窗体的属性设置为true并处理该KeyPress事件。

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