Tetapkan ProgressBar ke Pemuatan Halaman WebBrowser

Saya menggunakan kontrol WebBrowser untuk menelusuri halaman berbeda (dengan mengklik tombol pada Formulir itu sendiri, yang menavigasi kontrol WebBrowser ke halaman berbeda). Saat memuat halaman, saya ingin ProgressBar dianimasikan. Apakah ini benar-benar menunjukkan kemajuan bukanlah masalah besar - saya hanya bisa menggunakan gaya Marquee untuk menganimasikannya saat memuat.

Pertanyaannya adalah: Bagaimana cara membuat ProgressBar bernyawa dengan cara ini saat halaman sedang dimuat, dan berhenti saat halaman selesai dimuat?


person muttley91    schedule 30.10.2013    source sumber


Jawaban (1)


Lihatlah acara WebBrowser.ProgressChanged . Halaman MSDN mengatakan itu cukup "mirip dengan yang ada di Internet Explorer".

Cuplikan kode langsung dari sana:

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 akan menunjukkan berapa banyak byte yang telah diunduh sejauh ini, e.MaximumProgress akan menunjukkan berapa banyak byte ada untuk diunduh. Sangat mudah untuk mendapatkan persentase langsung dari itu, jadi... ini dia!

Saya tidak akan memandu Anda tentang cara membuat bilah kemajuan (ada BANYAK implementasi di luar sana untuk itu) namun ini akan membantu Anda.

Apakah ini menjawab pertanyaan Anda?

person tnw    schedule 30.10.2013
comment
Agak. Saya telah melihat beberapa implementasi bilah kemajuan dan sebagian besar mengatakan untuk menetapkan e.CurrentProgress ke progresBar.Value. Namun, karena ini panjang, saya harus memasukkannya sebagai int (sesuatu yang saya tidak lihat contohnya lakukan), dan kemudian saya mendapatkan kesalahan (saat kemajuannya berubah menjadi -1...kesalahan casting, saya saya kira). Lihat di sini untuk contohnya: stackoverflow.com/questions/3386135/ - person muttley91; 31.10.2013
comment
@rar Saya rasa itu kurang tepat, Anda perlu menyetel progressBar.Maxiumum sebagai e.MaximumProgress, jika tidak, nilai bilah kemajuan saat ini tidak memiliki referensi. - person tnw; 31.10.2013
comment
Melakukan hal itu juga memberi saya kesalahan yang menyatakan bahwa itu perlu dilemparkan sebagai int. Saya akan mencoba ini sekarang setelah saya memiliki set maksimum... EDIT: Tidak, tetap mendapatkan -1 sebagai e.CurrentProgress saya - person muttley91; 31.10.2013