为什么作为 webView2 对象的 coreWebView2 为空?

Abb*_*ala 8 c# browser invalid-url null-object-pattern webview2

我正在创建 Microsoft.Web.WebView2.WinForm.WebView2 的对象,但此 coreWebView2 的子对象为空

Microsoft.Web.WebView2.WinForm.WebView2 webView = new Microsoft.Web.WebView2.WinForm.WebView2()
// Change some GUI properties of webView
webView.CoreWebView.NavigateUrl(url)
// I can not access the above line because CoreWebView is null
Run Code Online (Sandbox Code Playgroud)

Огњ*_*јић 9

您可以使用EnsureCoreWebView2Async它来确保在进行任何导航之前对象已初始化。但是,更简单的是,您可以设置Source确保触发初始化的属性(如果尚未触发):

Microsoft.Web.WebView2.WinForm.WebView2 webView = new Microsoft.Web.WebView2.WinForm.WebView2();
webView.Soure = url;
Run Code Online (Sandbox Code Playgroud)


Rya*_*son 7

使用EnsureCoreWebView2Async方法初始化底层CoreWebView2属性。这在 MSDN 上有记录。此属性null用于WebView2类对象的初始化。

CoreWebView2 底层 CoreWebView2。

公共 CoreWebView2 CoreWebView2

使用此属性对 WebView2 内容执行比在 WebView2 上公开的操作更多的操作。此值在初始化之前为空。您可以通过 InitializeAsync(EnsureCoreWebView2Async - 显然 Microsoft 未能更新其文档)方法强制底层 CoreWebView2 进行初始化。

来源(https://docs.microsoft.com/en-us/microsoft-edge/webview2/reference/winforms/0-9-515/microsoft-web-webview2-winforms-webview2

  • 好的,谢谢你帮助我,这是因为“更喜欢 32 位”未选中 (3认同)
  • 我将此方法称为 webView.EnsureCoreWebView2Async() 但这不起作用。我仍然得到 CoreWebView2 属性 null (2认同)

小智 6

在程序开始时使用webView2.EnsureCoreWebView2Async(); 来初始化并创建事件以检查它是否已初始化。

bool ensure = false;

private void webView21_CoreWebView2InitializationCompleted(object sender, Microsoft.Web.WebView2.Core.CoreWebView2InitializationCompletedEventArgs e)
{
    ensure = true;
}
Run Code Online (Sandbox Code Playgroud)

工作演示:https://www.youtube.com/watch? v=S6Zr5T9UXUk


Nei*_*rao 5

我尝试了网络上的所有内容,但CoreWebView2总是null.

事实证明,我错过了Edge的运行时

然后我使用Microsoft Edge WebView2的 Evergreen Standalone 安装程序安装了它。然后它起作用了!


小智 5

首先,您必须使用以下代码初始化 webview2。

WebView21.EnsureCoreWebView2Async()
Run Code Online (Sandbox Code Playgroud)

然后,您应该在名为 CoreWebView2InitializationCompleted 的事件中编写以下代码。

WebView21.CoreWebView2.Navigate(yoururl)
Run Code Online (Sandbox Code Playgroud)