C# 网络浏览器控制。需要防止它在应用程序中关闭

C# 网络浏览器控制。需要防止它在应用程序中关闭,c#,wpf,browser,C#,Wpf,Browser,我有一个WPF,在这里我实现了一个WebBrowser控件,我有一个对象列表,当我选择它们时,它会更改WebBrowser控件的url绑定,一切正常 但是,如果我所在的网页试图关闭该网页,则会弹出一个对话框,您可以点击是或否来关闭“窗口”(WebBrowser控件) 如果用户点击“是”,则web浏览器控件将关闭,当您尝试在列表中选择其他内容时,会引发异常,因为该窗口不再存在 webbrowser控件没有关闭暴露在我可以访问的位置的方法,我可以覆盖“Window.Close()”方法,但这也阻止了

我有一个WPF,在这里我实现了一个WebBrowser控件,我有一个对象列表,当我选择它们时,它会更改WebBrowser控件的url绑定,一切正常

但是,如果我所在的网页试图关闭该网页,则会弹出一个对话框,您可以点击是或否来关闭“窗口”(WebBrowser控件)

如果用户点击“是”,则web浏览器控件将关闭,当您尝试在列表中选择其他内容时,会引发异常,因为该窗口不再存在

webbrowser控件没有关闭暴露在我可以访问的位置的方法,我可以覆盖“Window.Close()”方法,但这也阻止了我关闭主应用程序窗口

我已尝试从WebBrowser类继承,但它是密封的,因此无法继承以添加事件处理程序或重写方法(如“Close()”或事件(如“OnClosing()”)

我无法控制该网站,因为它是第三方产品

此外,WebBrowser控件在退出时不会取消导航

所以我的问题是

A.是否可以截取对话框并始终回答“否”


B.有没有其他方法可以防止WebBrowser控件在用户对对话框说“是”时关闭?

有一次我不得不解决类似的情况。它是一个Delphi应用程序,带有嵌入式TWebBrowser组件,本质上与.NET的WebBrowser相同。软件自动点击网页的元素,点击后弹出确认对话框。自动按下OK按钮的最简单方法是使用confirm对话框的参数调用,并使用窗口句柄通过调用向其发送Enter键。我认为在你的情况下,需要按一下逃生键

因此,我最终将控件放在它的单独视图中,然后将该视图作为一个对话进行构建和销毁

这看起来真的很骇人,我最终还是做了一些不同的事情。但是谢谢!