为什么WebBrowser_DocumentCompleted()会触发两次?
好吧,我使用一个简单的webbrowser控件来浏览页面,所以我需要在这样做时更改表单的Text。 我正在使用 –
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { this.Text += " - " + webBrowser1.Document.Domain; }
但是使用断点,我注意到,这个事件发射了两次。 我甚至尝试过_Navigated()
事件。 它也开了两次。 得到的标题为"Webber - google.co.in - google.co.in"
..
我也注意到这个事件在加载msn.com时多次激活..我只是在页面完成加载时才尝试更改表单的文本..
任何补救措施?
您可以在触发事件时检查WebBrowser.ReadyState:
if (browser.ReadyState != WebBrowserReadyState.Complete) return;
整个文档准备就绪后,ReadyState将设置为Complete。
每次加载帧时,都会触发该事件。
此外,在您去那里之前, IsBusy
属性只有在第一帧未加载时才为True
。
试试这个 :
void BrowserDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { if (e.Url.AbsolutePath != (sender as WebBrowser).Url.AbsolutePath) return; //The page is finished loading }
它每帧被触发一次。
我有同样的问题,原因是,默认情况下,当您添加控件时,它会生成这样的设计器代码。
this.webBrowser1.Url = new System.Uri("", System.UriKind.Relative);
如果你在打电话后更改了url
InitializeComponent(); WebBrowser.Navigate("NewUrl.com");
它将加载两个不同的页面: 关于:Blank和NewUrl.com
只是,删除设计师代码……然后你就会停止“双重”事件。
如果两次射击是一个问题,那么这应该工作:
string body=""; private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { if (body == webBrowser1.Document.Body.InnerHtml) return; body = webBrowser1.Document.Body.InnerHtml; // Here is something you want }
当您每次订阅此事件时导航到URL时,您可能会多次订阅此事件,就像您使用某种方法一样。
要解决此问题,请将该行移出该方法,并将其放在其他每个实例只调用一次的位置。 在类的构造函数中……也许应该解决你的问题。
实际上,它并不总是被解雇。 还没弄明白为什么不。 我有一个计时器,只需反复检查ReadyState几分钟。 (使用嵌入式浏览器控件)。
if (browser.ReadyState != WebBrowserReadyState.Complete)
建议使用。
当页面中有框架时,DocumentCompleted将被多次触发。这很难解决。检查url的一些方法并不准确。
顺便说一句,为什么不使用这个:
this.Text = stringA + " - " + webBrowser1.Document.Domain;
尝试使用固定前缀,问题可以轻松解决。
如何确定何时完成页面加载WebBrowser控件 DocumentCompleted
是WinForms的DocumentComplete外翻包装器,但WebBrowserDocumentCompletedEventArgs隐藏了sender参数,因此您无法分辨哪个帧正在引发事件。 或者,您可以检查WebBrowser.ReadyState
。
上述就是C#学习教程:为什么WebBrowser_DocumentCompleted()会触发两次?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/989262.html