我在我的 Visual Basic 项目中通过在 WebView2.CoreWebView2Ready 事件中设置一个布尔变量解决了这个问题,然后调用了一个一次性事件循环来等待表单激活事件以检查变量以确保它已初始化并准备好利用
我注意到即使在等待异步之后它仍然没有准备好立即使用并且 corewebview2 仍然为空,但这可能是 vb 的事情
这是一个从我的 webview2 Visual Basic 项目转换为 c# 的示例,它应该在 c# 中工作
class SurroundingClass
{
private bool FstRun = true;
private bool WebReady = false;
private void Form1_Activated(object sender, EventArgs e)
{
if (FstRun == true)
{
FstRun = false;
InitAsync();
Wait(); // wait for webview to initiaise
// code or sub here to reference the control navigate ect
}
}
private void WebView21_CoreWebView2Ready(object sender, EventArgs e)
{
WebReady = true;
}
private async void InitAsync()
{
await WebView21.EnsureCoreWebView2Async;
}
private void Wait()
{
while (!WebReady == true)
System.Windows.Forms.Application.DoEvents();
}
}