捕获和处理Web浏览器关闭事件

4
我正在使用Windows Forms和WebBrowser控件,需要捕获和处理WebBrowser控件的关闭调用。
我已经查看了这个链接,但它并不能按照我的需求工作:http://blogs.artinsoft.net/Mrojas/archive/2009/05/21/Extended-WebBrowser-Control-Series-WebBrowser-Control-and-windowClose().aspx 这是我收到的消息:
---------------------------
Web Browser
---------------------------
The webpage you are viewing is trying to close the window.

Do you want to close this window?
---------------------------
Yes   No   
---------------------------

我需要捕获这个事件并阻止它,然后执行一个函数。有人知道简单的方法吗?


这里有一篇非常好的文章:http://www.codeproject.com/Articles/71592/How-to-easily-capture-the-NewWindow3-event-and-det。虽然这个方法可以工作,但是它捕获事件的时间太晚了,我需要在消息框呈现给用户之前就捕获到该事件。 - Rusty Nail
2个回答

10

在四处搜寻却未能得到所需信息后,我偶然发现了一条参考资料:

HtmlDocument htmlDocument = this.webBrowser1.Document;
htmlDocument.Window.Unload += new HtmlElementEventHandler(Window_Unload);
文档在WebBrowser控件被关闭和释放之前确实被卸载了。
void Window_Unload(object sender, HtmlElementEventArgs e)
{
    // Do your stuff here...
    // Call Method...
    // Close Form...
}

现在这对我有效。


我无法让它工作。你把引用放在哪个方法里了? - user788055
这些都是标准的Windows Forms应用程序引用和Using语句。我想当时可能使用的是.Net 3.5,但这是Windows的标准.Net架构。在.Net4中测试过,也可以正常工作。 - Rusty Nail
好事情!不幸的是,当您刷新或导航到另一个网页时,甚至也会调用此事件... - Milan Matějka

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接