WebView2 - 捕获键盘事件

问题描述

我注意到“KeyUp”事件只捕获了一些键(上、下、左、右、Ctrl、转义)。在 Webbrowser 中,该事件捕获键盘中的所有键。我们如何添加添加按键按下或释放的事件?

谢谢

WebView2 mywebView = new WebView2();
mywebView.KeyUp += MywebView_KeyUp;

解决方法

在 WebView2 中,您必须在 HTML 的输入标签中添加 onkeyup 属性。当一个键被按下时,需要调用一个 javascript 方法来处理该事件或向主机发送一个“webmessage”来处理它。

这就是我在 WebView2 中为“keyup”事件工作所做的:

为输入标签定义“onkeyup”事件(我使用 HtmlTextWriter 但应该没有关系)。我调用名为“CallHost”的 javascript 方法

htmlWriter.AddAttribute("onkeyup","CallHost(this);");

将响应消息发送回主机(这将被 C# 中的“WebMessageReceived”事件捕获):

function CallHost(element) 
{
        window.chrome.webview.postMessage(
                                JSON.stringify({
                                ElementId: element.id,Type: element.tagName,Name: element.name,Value: element.value
                                })
                             );
 }

C# 事件处理程序:

private void MyWebView2_WebMessageReceived(object sender,CoreWebView2WebMessageReceivedEventArgs args)
{
        MyWebMessage message = JsonConvert.DeserializeObject<MyWebMessage>(args.TryGetWebMessageAsString());
     /*handle keyup*/
}