WebBrowserDocumentCompletedEventC#下面是我用作浏览器DocumentCompleted事件的函数,以及navBtnClick()方法,它负责创建网页浏览器并导航到一个特定的网址。publicvoidWebBrowser_DocumentCompleted(objectsender,WebBrowserDocumentCompletedEventArgse){MessageBox.Show(((WebBrowser)sender).Url.ToString());}privatevoidnavBtnClick(objectsender,EventArgse){WebBrowserwbrowser=newWebBrowser();.DocumentCompleted+=newWebBrowserDocumentCompletedEventHandler(WebBrowser_DocumentCompleted);wbrowser.Navigate("http://www.google.com");现在通过这一行wbrowser.Navigate("http://www.google.com");执行,有一个消息框正确显示url,然后过了一会儿,另一个消息框显示相同的url。所以发生的事情是DocumentCompleted事件处理程序上的任何内容都被执行了两次。有人可以帮我让它只执行一次吗?我记得,如果导航到的文档包含嵌入在另一个网页中的iframe,DocumentCompleted将触发多次。如果您只想接收一次事件,只需取消订阅DocumentCompleted处理程序:webBrowser.DocumentCompleted-=WebBrowser_DocumentCompleted;MessageBox.Show(webBrowser.Url.To());}privatevoidnavBtnClick(objectsender,EventArgse){varwbrowser=newWebBrowser();wbrowser.DocumentCompleted+=newWebBrowserDocumentCompletedEventHandler(WebBrowser_DocumentCompleted);wbrowser.Navigate("http://www.google.com");或者,您可以使用System.IObservable和ReactiveExtensions订阅一个事件触发:privatevoidnavBtnClick(objectsender,EventArgse){varbrowser=newWebBrowser();vardocCompleted=Observable.FromEventPattern(browser,"DocumentCompleted")docCompleted.Take(1)//只触发一个事件.Subscribe(i=>MessageBox.Show(browser.Url.ToString()));browser.Navigate("http://www.google.com");}对我来说,http://www.google.com重定向到http://www.google.ca。如果这样的事情发生在您身上,您可能会为这两个文档中的每一个获取文档完成事件。尝试输出/跟踪WebBrowserDocumentCompletedEventArgs.Url以查看完整的文档。以上就是C#学习教程:WebBrowser文档,已经完成了活动C#分享的全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
