WebView2 - 捕获键盘事件
WebView2 - Capture Keyboard Events
我注意到“KeyUp”事件仅捕获部分键(上、下、左、右、Ctrl、转义)。在 WebBrowser 中,该事件捕获键盘上的所有键。我们如何添加添加按键按下或释放的事件?
谢谢
WebView2 mywebView = new WebView2();
mywebView.KeyUp += MywebView_KeyUp;
在 WebView2 中,您必须将 onkeyup
属性添加到 HTML 中的输入标签。当一个键被按下时,需要调用一个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*/
}
我注意到“KeyUp”事件仅捕获部分键(上、下、左、右、Ctrl、转义)。在 WebBrowser 中,该事件捕获键盘上的所有键。我们如何添加添加按键按下或释放的事件?
谢谢
WebView2 mywebView = new WebView2();
mywebView.KeyUp += MywebView_KeyUp;
在 WebView2 中,您必须将 onkeyup
属性添加到 HTML 中的输入标签。当一个键被按下时,需要调用一个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*/
}