如何在Windows窗体(C ++)中捕获击键?

时间:2016-08-13 08:23:56

标签: c++ winforms webbrowser-control

Form有一个DataGridView(显示一行)和WebBrowser。

Form的事件keyDown有一个处理程序,通过按F2激活该处理程序,该句柄将该单词写入特定单元格。相同的函数绑定到DataGridView

private: System::Void CSV_WViewForm_KeyDown(
    System::Object^  sender,
    System::Windows::Forms::KeyEventArgs^  e)
    {
        if (e->KeyCode == Keys::F2)
            /*Do something*/;           
    }

必须按F2始终工作,并且一次(第一次)。为此,我使用了属性KeyPreview = false; (我尝试了一个真实的 - 没有用)和下一个代码:

protected:
    virtual bool ProcessCmdKey(Message% msg, Keys keyData) override
    {
        if (keyData == Keys::F2)
        {
            this->dataGridView1->Focus();
            return Form::ProcessCmdKey(msg, keyData);
        }
        return Form::ProcessCmdKey(msg, keyData);
    }

但是当Focus在WebBrowser中时,F2并不总是有效(有时需要按F2两次)。怎么打败它?

该项目位于Visual Studio 2015 (C++)

0 个答案:

没有答案