2013-10-30 96 views
0

我使用WebBrowser控件瀏覽到不同的頁面(通過單擊窗體本身上的按鈕,將WebBrowser控件導航到不同的頁面)。當它加載頁面時,我想要一個ProgressBar動畫。無論它是否實際指示進度並不是什麼大問題 - 我可以在加載時使用「選取框」樣式進行設置。將ProgressBar分配給WebBrowser頁面加載

現在的問題是:如何在頁面加載時以此方式製作ProgressBar動畫,並在頁面加載完成時停止?

回答

3

查看WebBrowser.ProgressChanged事件。 MSDN頁面說它非常「類似於Internet Explorer中的」。

代碼從那裏直片段:

private void WebBrowser1_ProgressChanged(Object sender, WebBrowserProgressChangedEventArgs e) { 

    System.Text.StringBuilder messageBoxCS = new System.Text.StringBuilder(); 
    messageBoxCS.AppendFormat("{0} = {1}", "CurrentProgress", e.CurrentProgress); 
    messageBoxCS.AppendLine(); 
    messageBoxCS.AppendFormat("{0} = {1}", "MaximumProgress", e.MaximumProgress); 
    messageBoxCS.AppendLine(); 
    MessageBox.Show(messageBoxCS.ToString(), "ProgressChanged Event"); 
} 

e.CurrentProgress將表明多少字節已經下載到目前爲止,e.MaximumProgress將表明有多少字節下載。從這個得到一個百分比很容易,所以...你去!

我不會告訴你如何創建一個進度條(這裏有一些實現的實現),但是這會讓你繼續。

這是回答您的問題嗎?

+0

有點。我查看了幾個進度條實現,並且大多數人都說將e.CurrentProgress分配給progressBar.Value。然而,由於它很長,我必須把它作爲一個int(我沒有看到這些例子),然後我得到一個錯誤(因爲進度變成了-1 ...鑄造錯誤,我猜猜)。看到這裏的例子:http://stackoverflow.com/questions/3386135/progress-bar-for-a-web-browser-control-in-windows-application-project-using-c-sh – muttley91

+0

@rar我不不要以爲這是正確的,你需要將'progressBar.Maxiumum'設置爲'e.MaximumProgress',否則進度條的當前值沒有參考。 – tnw

+0

這樣做也給了我一個錯誤,說明它需要被轉換爲int。我現在試試這個,我已經設置了最大值...編輯:不,仍然得到-1,因爲我的'e.CurrentProgress' – muttley91