กำหนด ProgressBar ให้กับการโหลดเพจของเว็บเบราว์เซอร์

ฉันใช้ตัวควบคุมเว็บเบราว์เซอร์เพื่อเรียกดูหน้าต่างๆ (โดยคลิกปุ่มบนแบบฟอร์มซึ่งนำทางตัวควบคุมเว็บเบราว์เซอร์ไปยังหน้าต่างๆ) ขณะโหลดหน้าเว็บ ฉันต้องการให้ ProgressBar เคลื่อนไหว การที่ข้อมูลดังกล่าวบ่งชี้ถึงความคืบหน้าจริง ๆ หรือไม่นั้นไม่ใช่เรื่องใหญ่อะไร ฉันแค่ใช้สไตล์ Marquee เพื่อทำให้เคลื่อนไหวขณะโหลดได้

คำถามคือ ฉันจะทำให้ ProgressBar เคลื่อนไหวในลักษณะนี้ได้อย่างไรเมื่อเพจกำลังโหลด และหยุดเมื่อเพจโหลดเสร็จแล้ว


person muttley91    schedule 30.10.2013    source แหล่งที่มา


คำตอบ (1)


ดูเหตุการณ์ 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 จะระบุจำนวนไบต์ มีให้ดาวน์โหลด มันค่อนข้างง่ายที่จะได้รับเปอร์เซ็นต์ตรงจากนั้น... เอาล่ะ!

ฉันจะไม่แนะนำวิธีสร้างแถบความคืบหน้าให้คุณทราบ (มีการใช้งานมากมายให้เลือกใช้) แต่สิ่งนี้จะช่วยให้คุณก้าวต่อไปได้

สิ่งนี้ตอบคำถามของคุณหรือไม่?

person tnw    schedule 30.10.2013
comment
ค่อนข้าง. ฉันได้ดูการใช้งานแถบความคืบหน้ามาหลายครั้งแล้ว และส่วนใหญ่บอกว่าให้กำหนด e.CurrentProgress ให้กับprogressBar.Value อย่างไรก็ตาม เนื่องจากมันยาว ฉันจึงต้องส่งมันเป็น int (บางสิ่งที่ฉันไม่เห็นตัวอย่างทำ) จากนั้นฉันก็ได้รับข้อผิดพลาด (เนื่องจากความคืบหน้ากลายเป็น -1...ข้อผิดพลาดในการส่ง ฉัน ฉันกำลังเดาอยู่) ดูตัวอย่างที่นี่: stackoverflow.com/questions/3386135/ - person muttley91; 31.10.2013
comment
@rar ฉันไม่คิดว่าจะค่อนข้างถูกต้อง คุณต้องตั้งค่า progressBar.Maxiumum เป็น e.MaximumProgress ไม่เช่นนั้นค่าปัจจุบันของแถบความคืบหน้าจะไม่มีการอ้างอิง - person tnw; 31.10.2013
comment
การทำเช่นนี้ทำให้ฉันมีข้อผิดพลาดโดยระบุว่าจำเป็นต้องแปลงเป็น int ฉันจะลองตอนนี้เมื่อฉันมีชุดสูงสุดแล้ว... แก้ไข: ไม่ ยังคงได้ -1 เป็น e.CurrentProgress ของฉัน - person muttley91; 31.10.2013