2

私はC#でプログレスバーとWebブラウザーコントロールを使用していますが、ナビゲート中にスムーズなプログレスバーを作成することはできません。段階的に作成していただければ幸いです。

4

3 に答える 3

10

使用WebBrowser.ProgressChangedイベント:

private void WebBrowser1_ProgressChanged(Object sender, 
                                         WebBrowserProgressChangedEventArgs e)
{
    progressBar.Maximum = (int) e.MaximumProgress;
    progressBar.Value = (int) e.CurrentProgress;
}
于 2012-08-05T07:37:02.343 に答える
3

プログレスバーは、アクションのにどれだけやろうとしているかを知っている場合にのみ役立ちます. Web ページをロードする場合、これは、ロードされるすべてのリソースのサイズを知ることを意味します。それは本当に実現可能ではありません。実際には予測できない他の部分もあります。

  1. DNS ルックアップ
  2. サーバーへの接続を開く
  3. 他のリソースからロードされたリソース (別の CSS を埋め込む JavaScript や画像を参照する CSS など)
  4. ...

すべての主要なブラウザーは、ページの読み込みの進行状況を表示することをずっと前にあきらめています。現在は、代わりに読み込みアクティビティを表示するだけです。

WebBrowser コントロールにはProgressChangedイベントがありますが、その信頼性はわかりません。しかし、それはおそらくあなたの最善の試みです。ただし、上記のすべてのポイントは引き続き適用されます。あなたもブラウザもプログレスバーを正確にするのに十分な知識を持っていないため、大まかな概算 (HTML のロード後に開始し、ロードされた追加のリソースのみを表す) であるか、合計リソースの推定が間違っていた場合にぐちゃぐちゃになったり、逆方向に実行されたりすることさえあります。 .

于 2012-08-05T06:55:46.590 に答える
3
private void webBrowser1_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e)
{
    progressBar1.Maximum = 100;
    progressBar1.Minimum = 0;
    if ((e.CurrentProgress > 0) && (e.CurrentProgress < 100))
    {
        progressBar1.Value = (int)e.CurrentProgress;
    }
}
于 2015-03-23T14:28:06.257 に答える