WinForm启用YouTube原生全屏遇CoreWebView2Ready CS1061错误求助
修复WinForm WebView2的CS1061错误(CoreWebView2Ready不存在)
错误原因
WebView2控件没有CoreWebView2Ready这个事件,你记错了事件名称;且你的代码已经通过await webView21.EnsureCoreWebView2Async(null)等待CoreWebView2初始化完成,后续直接操作CoreWebView2是完全安全的,不需要额外订阅初始化事件。
修复步骤
直接移除错误的事件订阅代码即可,修改后的完整代码如下:
private async void InitializeWebView2() { webView21 = new WebView2(); await webView21.EnsureCoreWebView2Async(null); webView21.CoreWebView2.Settings.IsWebMessageEnabled = true; string youtubeVideoId = "VideoID"; string youtubeVideoQuality = "hd720"; string youtubeVideoUrl = $"https://www.youtube.com/embed/{youtubeVideoId}?vq={youtubeVideoQuality}"; // 移除错误的CoreWebView2Ready事件订阅 webView21.CoreWebView2.Navigate(youtubeVideoUrl); Controls.Add(webView21); }
补充说明(非必要场景)
如果你的代码没有使用await EnsureCoreWebView2Async,需要监听初始化完成事件,应该使用**CoreWebView2InitializationCompleted**事件,示例代码如下:
private void InitializeWebView2() { webView21 = new WebView2(); // 订阅正确的初始化完成事件 webView21.CoreWebView2InitializationCompleted += WebView21_CoreWebView2InitializationCompleted; // 触发初始化 webView21.EnsureCoreWebView2Async(null); Controls.Add(webView21); } // 事件处理方法 private void WebView21_CoreWebView2InitializationCompleted(object sender, CoreWebView2InitializationCompletedEventArgs e) { if (e.IsSuccess) { webView21.CoreWebView2.Settings.IsWebMessageEnabled = true; string youtubeVideoId = "VideoID"; string youtubeVideoQuality = "hd720"; string youtubeVideoUrl = $"https://www.youtube.com/embed/{youtubeVideoId}?vq={youtubeVideoQuality}"; webView21.CoreWebView2.Navigate(youtubeVideoUrl); } else { MessageBox.Show($"WebView2初始化失败:{e.InitializationException.Message}"); } }
内容的提问来源于stack exchange,提问作者RobbGarner
相关产品推荐
相关产品推荐

