c# - 如何防止WebView2(Edge based)打开新窗口

标签 c# winforms webview2

当我打开一个新选项卡时,在 Webview2 内部,WindowsForms 外部的一个新窗口打开。我想阻止这个窗口打开,我该怎么做?

最佳答案

您可以办理CoreWebView2.NewWindowRequested决定新窗口

  • 要完全抑制弹出窗口,请设置 e.Handled = true;
  • 要在同一窗口中显示弹出内容,请设置 e.NewWindow = (CoreWebView2)sender;
  • 要在另一个特定实例中打开,请设置 e.NewWindow到另一个 CoreWebView2实例。

  • 例如:
    //using Microsoft.Web.WebView2.Core;
    //using Microsoft.Web.WebView2.WinForms;
    
    WebView2 webView21 = new WebView2();
    private async void Form1_Load(object sender, EventArgs e)
    {
        webView21.Dock = DockStyle.Fill;
        this.Controls.Add(webView21);
        webView21.Source = new Uri("Https://stackoverflow.com");
        await webView21.EnsureCoreWebView2Async();
        webView21.CoreWebView2.NewWindowRequested += CoreWebView2_NewWindowRequested;
    }
    
    private void CoreWebView2_NewWindowRequested(object sender,
        CoreWebView2NewWindowRequestedEventArgs e)
    {
        e.NewWindow = (CoreWebView2)sender;
        //e.Handled = true;
    }
    

    关于c# - 如何防止WebView2(Edge based)打开新窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66191200/

    相关文章:

    javascript - web api 2 CORS 不存在 'Access-Control-Allow-Origin' header

    c# - WPF Windows 窗体主机键盘事件

    .net - 如何以编程方式关闭 VB.NET 中的 ComboBox 下拉菜单?

    c# - .NET 2.0 (WinForms) 的组件应用程序 block - 有哪些新版本?

    c# - 在 Visual Studio 2010 中附加到进程是什么意思?

    c# - 避免只读文本框上的选项卡索引

    c# - 启用应用按钮的事件

    c++ - 如何获得Edge窗口句柄(HWND)?

    WebView2 环境异常(请求的资源正在使用中)

    c# - 尝试将参数传递给新的 EventHandler