2012-08-28 58 views
0

可能重複:
How to use WebBrowser control DocumentCompleted event in C#?WebBrowser控件已越來越多狀態

有人能告訴我爲什麼DocumentCompleted事件發生3次???

我如何知道該文件是否已被下載?

(我使用了一些網頁,以測試有很多的jQuery的。)

謝謝!

var webBrowser1 = new WebBrowser 
       { 
        Padding = new Padding(0), 
        Margin = new Padding(0), 
        Dock = DockStyle.Fill, 
        Url = url, 
        TabStop = false, 
        ScriptErrorsSuppressed = true, 
        IsWebBrowserContextMenuEnabled = false 
       }; 
       webBrowser1.Navigated += (d1,d2) => 
       { 
        Debug.WriteLine("Navigated " + DateTime.Now.TimeOfDay.ToString()); 
       }; 
       webBrowser1.DocumentCompleted += (d1, d2) => 
       { 
        Debug.WriteLine("DocumentCompleted " + DateTime.Now.TimeOfDay.ToString());     
       }; 


       form.Controls.Add(webBrowser1); 
       form.Show(); 

LOG:

導航中09:40:40.1807403 導航中09:40:44.7270004 DocumentCompleted 09:40:44.7300005 導航中09:40:46.5791063 DocumentCompleted 09:40:46.5821065 導航中09 :40:50.1113083 DocumentCompleted 09:40:50.7133428 DocumentCompleted 09:40:50.7233433

回答

0

我發現了一個好方法,在這裏

How to use WebBrowser control DocumentCompleted event in C#?

webBrowser1.DocumentCompleted += (d1, d2) => 
       { 


        string urlCurrent = d2.Url.ToString(); 
        var browser = (WebBrowser)d1; 

        if (!(urlCurrent.StartsWith("http://") || urlCurrent.StartsWith("https://"))) 
        { 
         // in AJAX  
        } 
        if (d2.Url.AbsolutePath != browser.Url.AbsolutePath) 
        { 
         // IFRAME   
        } 
        else 
        { 
         // REAL DOCUMENT COMPLETE 

         Debug.WriteLine("DocumentCompleted " + DateTime.Now.TimeOfDay.ToString()); 
        } 

       };