C# WebForm/WebBrowser中的新窗口2和新窗口3是什么
我正在尝试将我们当前的WebForms应用程序转换为使用ChromimumWebBrowser的CefSharp浏览器。我在当前代码中遇到了以下问题:C# WebForm/WebBrowser中的新窗口2和新窗口3是什么,c#,webforms,webbrowser-control,cefsharp,shdocvw,C#,Webforms,Webbrowser Control,Cefsharp,Shdocvw,我正在尝试将我们当前的WebForms应用程序转换为使用ChromimumWebBrowser的CefSharp浏览器。我在当前代码中遇到了以下问题: private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { if (!newWindow3ListenerAdded) { newWindow3ListenerAdded
private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
if (!newWindow3ListenerAdded) {
newWindow3ListenerAdded = true;
SHDocVw.WebBrowser browser = (SHDocVw.WebBrowser)webBrowser.ActiveXInstance;
browser.NewWindow3 += Browser_NewWindow3;
browser.NewWindow2 += browser_NewWindow2;
}
}
private void browser_NewWindow2(ref object ppDisp, ref bool Cancel)
{
webform.webBrowser.GoBack();
ppDisp = webform.webBrowser.ActiveXInstance;
webform.Show();
}
private void Browser_NewWindow3(ref object ppDisp, ref bool cancel, uint dwFlags, string sourceUrl, string targetUrl)
{
cancel = true;
if (targetUrl.Contains(".pdf")) {
WebForm webForm = new WebForm();
webForm.Text = targetUrl;
webForm.Navigate(targetUrl);
webForm.Show();
} else {
webBrowser.Navigate(targetUrl);
}
}
有人能指导我把这个转换成Cef吗。我知道我必须在ILifeSpanHandler中实现OnBeforePopup()。但是,我如何准确地编写逻辑来为不同类型的弹出窗口加载pdf/GoBack/Navigate(targetUrl)
我想我可以很容易地将浏览器_NewWindow3()转换成现在的样子(检查targetUrl.Contains(“.pdf”)),但在什么条件下我才能处理浏览器_NewWindow2()逻辑,即webBrowser.GoBack()
这就是我试过的
OnBeforePopup() {
newBrowser = null;
if (targetUrl.Contains(".pdf")) {
CefForm cefForm = new CefForm();
cefForm.Text = targetUrl;
cefForm.Navigate(targetUrl);
cefForm.Show();
return false;
} else {
browserControl.Load(targetUrl);
return true;
}
}
但是如何处理浏览器\u NewWindow2逻辑?我不熟悉SHDocVw.WebBrowser。您的ILifeSpanHandler.OnBeforePopup实现当前是什么样子的?browser_NewWindow2实现了什么功能?用代码运行你的应用程序,然后用代码注释再次运行,找出行为是什么。在问题中更新了我尝试的内容。你认为browserControl.Load(targetUrl)是正确的吗;正确吗?你的预期行为是什么?是否有理由为PDF创建新窗口?默认行为将已打开一个新窗口。