📜  cefsharp 未将 keydown 传递给表单 - C# (1)

📅  最后修改于: 2023-12-03 15:29:57.293000             🧑  作者: Mango

CefSharp 未将 keydown 传递给表单 - C#

若你正在使用 CefSharp,你可能遇到了以下问题:当你在 CefSharp 的浏览器控件中输入内容时,keydown 事件不会传递给表单。换句话说,你可能会发现在输入框中键入字母时,未触发任何事件。

我们可以解决这个问题,只需遵循以下步骤:

1. 为浏览器控件添加 PreviewKeyDown 事件

在你的 CefSharp 浏览器控件上,添加如下代码:

yourBrowserControl.PreviewKeyDown += BrowserControlOnPreviewKeyDown;
2. 编写 BrowserControlOnPreviewKeyDown 方法

此时,我们需要编写方法,以在浏览器控件中的 keydown 事件中触发表单。

private void BrowserControlOnPreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
    if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Tab)
    {
        e.IsInputKey = true;
    }
}

在这个方法中,我们检查了用户输入的按键,如果它们是 EnterTab,那么我们将 IsInputKey 设置为 true。这将确保 keydown 事件传递到表单。

3. 运行你的应用程序!

现在,重新运行你的应用程序,并尝试在浏览器控件中键入字母。你应该会发现这些事件现在会传递给表单。

我们已经成功地解决了 CefSharp 未将 keydown 传递给表单的问题!