国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 明星| 深水埗区| 黄冈市| 义马市| 麻江县| 大新县| 上蔡县| 法库县| 加查县| 秭归县| 甘泉县| 嘉义县| 敦煌市| 石屏县| 宁蒗| 阿荣旗| 五常市| 榆社县| 龙陵县| 公安县| 伊宁县| 文化| 剑阁县| 宣城市| 长白| 安义县| 满城县| 仪征市| 拉萨市| 灵寿县| 富民县| 南江县| 商洛市| 札达县| 井研县| 双城市| 临颍县| 荥经县| 都兰县| 铁岭县| 定结县|