问题描述
我想知道是否有办法阻止 webview2 组件打开浏览器窗口 以胜利形式
我到处找都找不到,虽然我找到了,但它使用了 XAML/UWP
一个页面使用了 xaml 但代码不起作用,因为它的 XAML 和 im 使用 c#
解决方法
要停止在新窗口中打开链接,您订阅了 CoreWebView2_NewWindowRequested
,如您所见。
为此,最简单的方法是先订阅 CoreWebView2InitializationCompleted
。
在 WebView2
控件的属性窗口中,双击 CoreWebView2InitializationCompleted
- 这将自动生成事件处理程序:
现在您添加 CoreWebView2_NewWindowRequested
事件处理程序并将 e.NewWindow
设置为当前的 CoreWebView2
。
代码如下(假设您的 WebView2
控件名为 webView21
):
private void WebView21_CoreWebView2InitializationCompleted(object sender,Microsoft.Web.WebView2.Core.CoreWebView2InitializationCompletedEventArgs e)
{
webView21.CoreWebView2.NewWindowRequested += CoreWebView2_NewWindowRequested;
}
private void CoreWebView2_NewWindowRequested(object sender,Microsoft.Web.WebView2.Core.CoreWebView2NewWindowRequestedEventArgs e)
{
e.NewWindow = webView21.CoreWebView2;
}
现在链接在同一窗口中打开(您的 WebView2
控件)。
我像上面提到的 Poul Bak 一样尝试过它对我有用,可能是您的活动订阅位置可能有误,请尝试如下。
在 CoreWebView2 初始化后订阅 NewWindowRequested 事件。
例如:
public Form1()
{
InitializeComponent();
//https://docs.microsoft.com/en-us/microsoft-edge/webview2/get-started/winforms
InitializeAsync();
}
async void InitializeAsync()
{
await webView.EnsureCoreWebView2Async(null);
webView.CoreWebView2.NewWindowRequested += CoreWebView2_NewWindowRequested;
}
private void CoreWebView2_NewWindowRequested(object sender,CoreWebView2NewWindowRequestedEventArgs e)
{
e.NewWindow = webView.CoreWebView2;
}
快乐编码...... !!!!