Microsoft .Net Win Form Webview2 interop

601 Views Asked by At

I'm trying to interoperate with a page loaded in webview2. Basically what I'm trying to do is calling a win form method from the webview but the method showMessageFromWebview2 is never fired.

The web content is loaded from localhost.

Any help would really be appreciated.

The code in win form

 async private void WebView_CoreWebView2Ready(object sender, EventArgs e)
        {
            testBrowser.CoreWebView2.WebMessageReceived += showMessageFromWebview2; 
        }

public void showMessageFromWebview2(Object sender, CoreWebView2WebMessageReceivedEventArgs args)
        {
            String msg = args.TryGetWebMessageAsString();
            MessageBox.Show(msg);
        }

Javascript code

window.chrome.webview.postMessage(mJsonObject);
1

There are 1 best solutions below

0
Kingxlayer On

Finally I got it! Thanks @demonplus!

I've just moved the CoreWebView2.Settings and the WebMessageReceived event handler to the initialization block just after the EnsureCoreWebView2Async method:

async private void InitializeAsync()
{
    await testBrowser.EnsureCoreWebView2Async(); // Wait for coreWebView2 initialization
    testBrowser.CoreWebView2.Settings.IsWebMessageEnabled = true;
    testBrowser.CoreWebView2.WebMessageReceived += showMessageFromWebview2;
}