国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C# > 正文

C#中WebBrowser.DocumentCompleted事件多次調(diào)用問(wèn)題解決方法

2020-01-24 02:10:12
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

關(guān)于DocumentCompleted事件,MSDN給出的解釋是在文檔加載完畢后執(zhí)行,但是在我的程序中DocumentCompleted卻被多次調(diào)用,查了一下資料,大概出現(xiàn)了以下幾種情況。

1、WebBrowser載入一個(gè)頁(yè)面后DocumentCompleted事件會(huì)執(zhí)行兩次,但這兩次的ReadyState狀態(tài)不一樣,分別是Intercative和Complete。而MSDN對(duì)這兩種狀態(tài)值的解釋是:Complete該控件已完成新文檔及其所有內(nèi)容的加載;Interactive該控件已經(jīng)加載足夠的文檔以允許有限的用戶(hù)交互,比如單擊已顯示的超鏈接。由此可見(jiàn),實(shí)際上DocumentCompleted事件會(huì)在Interactive狀態(tài)和Complete狀態(tài)各調(diào)用一次,那么我們可以根據(jù)我們的需要來(lái)判斷到底需要那一次。解決辦法實(shí)例代碼如下:

復(fù)制代碼 代碼如下:

if(webBrowser1.ReadyState!=WebBrowerReadyState.Complete)
    return;

2、如果一個(gè)頁(yè)面中含有多個(gè)框架頁(yè),那么在每個(gè)框架頁(yè)加載完成時(shí)也可能觸發(fā)一次DocumentCompleted事件(MSDN對(duì)其解釋是在多個(gè)的幀的情況下DocumentComplete獲取觸發(fā)多次。并非每個(gè)框架將觸發(fā)此事件,但觸發(fā)DownloadBegin事件的每個(gè)框架將觸發(fā)相應(yīng)的DocumentComplete事件)。這種情況下解決辦法實(shí)例代碼如下:
復(fù)制代碼 代碼如下:

if(e.Url.ToString()!=webBrowser1.Url.ToString())
    return;

此外,MSDN給出了另外一種方案,詳見(jiàn):

3、對(duì)于以上兩種情況我是沒(méi)遇到,卻碰到了第三種情況:在我的DocumentCompleted事件里執(zhí)行了相應(yīng)的代碼,結(jié)果又觸發(fā)了一次DocumentCompleted事件,如此循環(huán)往復(fù),沒(méi)完沒(méi)了。使用webBrowser1.Stop(),還是沒(méi)法停止。webBrowser1.Nagviate("about:blank")問(wèn)題還是依舊。這時(shí)候我們只能卸載DocumentCompleted事件了,即在DocumentCompleted事件里執(zhí)行完你需要的代碼后,再來(lái)一句:

復(fù)制代碼 代碼如下:

webBrowser1.DocumentCompleted -= new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 前郭尔| 财经| 福清市| 开封市| 裕民县| 康平县| 滦南县| 遂溪县| 乌兰察布市| 苏尼特左旗| 苍山县| 永川市| 明水县| 台州市| 普兰店市| 望城县| 新巴尔虎右旗| 五大连池市| 凉城县| 汉源县| 五原县| 敖汉旗| 潜山县| 崇义县| 武胜县| 五河县| 通化县| 宜春市| 元氏县| 桐乡市| 日照市| 隆子县| 遂宁市| 镇远县| 全椒县| 卢氏县| 潞西市| 囊谦县| 察哈| 托里县| 岑溪市|