none
Webページの読み込み状況をプログレスバーに表示したい RRS feed

  • 質問

  • 現在、WebBrowserコントロールを使ったブラウザーアプリを開発しております。

    ProgressBarを使用してWebページの読み込み状況を視覚化したいのですが、うまくいきません。

    うまくいく方法を教えていただけませんでしょうか?

    参考までに、ソースコードを乗せます。

    using System;
    using System.Windows.Forms;

    namespace Simple_Browser_A07
    {
        public partial class SimpleBrowser : Form
        {

            public int inputURL;

            public SimpleBrowser()
            {
                InitializeComponent();
            }

            private void insertURL_SelectedIndexChanged(object sender, EventArgs e)
            {
                 browserRegion.Navigate(insertURL.SelectedText);
            }

            private void pgrbarLoading_Click(object sender, EventArgs e)
            {
                pgrbarLoading.Minimum = 0;
                pgrbarLoading.Maximum = 100;
                pgrbarLoading.Value = 0;

                for (int i = 1; i <= 10; i++)
                {
                    System.Threading.Thread.Sleep(1000);
                    pgrbarLoading.Value = i;
                    this.Update();
                }

            }

            private void buttonBack_Click(object sender, EventArgs e)
            {
                if (browserRegion.CanGoBack)
                {
                    browserRegion.GoBack();
                }
            }

            private void buttonFow_Click(object sender, EventArgs e)
            {
                if (browserRegion.CanGoForward)
                {
                    browserRegion.GoForward();
                }
            }

            private void buttonRlo_Click(object sender, EventArgs e)
            {
                browserRegion.Refresh();
            }
        }
    }

    2017年5月3日 7:52

回答

  • WebBrowserコントロールにはProgressChangedイベントがあるので、これで進捗を見てはどうでしょう

    private void browserRegion_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e)
    {
        pgrbarLoading.Minimum = 0;
        pgrbarLoading.Maximum =10000;
        pgrbarLoading.Value =(int)(10000 *(double) e.CurrentProgress/ (double)e.MaximumProgress)  ;
    }
    
    private void browserRegion_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        pgrbarLoading.Minimum = 0;
        pgrbarLoading.Maximum = 10000;
        pgrbarLoading.Value = pgrbarLoading.Maximum;
    }
    #非同期読み込み遅延読み込みなどがあると変な動きしますが

    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    2017年5月3日 10:09