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++)