06-10-12, 10:42 PM
الآن سنقوم بشئ جديد
هل فكرت تربط أداة ProgressBar بمسار عملية ومدى تنفيذه
لنري ذلك
ضع أداة ProgressBar وزر Button على الفورم - بالطبع أيضاً عنصر BackgroundWorker
فى الحدث الافتراضي للعنصر نكتب هذا الكود
هذا الكود نوضحه الآن
قمنا بعمل حلقة من إلى 100
نرسل إلي ReportProgress قيمة المتغير I وهو يبدأ من 0 حتى 100 وهى مدي نسبة تمام العملية
أوضحنا للمسار Threading وقت TimeOut لكى يتم حجب المسار لو تعداه
ويجب وضعه ويكون بالملى ثانية لأن فى حالة عدم وضعه يكون الافتراضي له صفر
حتى الأن الأمور واضحة
===========================================
نضع هذه الخصائص فى حدث تحميل الفورم
وهى تحديد خاصية Minimum - Maximum للأداة ProgressBar
جعلنا الخاصية WorkerReportsProgress للعنصر BackgroundWorker تساوي true لكى نستطيع أن نعود بقيمة نسبة تمام العملية
الخصائص السابقة يمكن تعديها أثناء وقت التصميم من نافذة الخصائص لكل أداة
=======================================
الحدث ProgressChanged للعنصر BackgroundWorker
سنجعله يرسل قيمة نسبة التمام إلى قيمة ProgressBar لكى يتغير قيمة ProgressBar مع نسبة تمام العملية
===========================================
الآن وبعد طول شرح وانتظار نبدأ على بركة الله اطلاق المسار
حيث نعيد ProgressBar إلى القيمة صفر لكى يكون فارغ
ثم نشغل المشار
هل فكرت تربط أداة ProgressBar بمسار عملية ومدى تنفيذه
لنري ذلك
ضع أداة ProgressBar وزر Button على الفورم - بالطبع أيضاً عنصر BackgroundWorker
فى الحدث الافتراضي للعنصر نكتب هذا الكود
كود :
Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
For I As Integer = 0 To 100
Me.BackgroundWorker1.ReportProgress(I)
System.Threading.Thread.Sleep(100)
Next
End Subهذا الكود نوضحه الآن
قمنا بعمل حلقة من إلى 100
نرسل إلي ReportProgress قيمة المتغير I وهو يبدأ من 0 حتى 100 وهى مدي نسبة تمام العملية
أوضحنا للمسار Threading وقت TimeOut لكى يتم حجب المسار لو تعداه
ويجب وضعه ويكون بالملى ثانية لأن فى حالة عدم وضعه يكون الافتراضي له صفر
كود :
System.Threading.Thread.Sleep(100)حتى الأن الأمور واضحة
===========================================
نضع هذه الخصائص فى حدث تحميل الفورم
كود :
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.BackgroundWorker1.WorkerReportsProgress = True
Me.ProgressBar1.Minimum = 0
Me.ProgressBar1.Maximum = 100
End Subوهى تحديد خاصية Minimum - Maximum للأداة ProgressBar
جعلنا الخاصية WorkerReportsProgress للعنصر BackgroundWorker تساوي true لكى نستطيع أن نعود بقيمة نسبة تمام العملية
الخصائص السابقة يمكن تعديها أثناء وقت التصميم من نافذة الخصائص لكل أداة
=======================================
الحدث ProgressChanged للعنصر BackgroundWorker
سنجعله يرسل قيمة نسبة التمام إلى قيمة ProgressBar لكى يتغير قيمة ProgressBar مع نسبة تمام العملية
كود :
Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
Me.ProgressBar1.Value = e.ProgressPercentage
End Sub===========================================
الآن وبعد طول شرح وانتظار نبدأ على بركة الله اطلاق المسار
كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.ProgressBar1.Value = 0
Me.BackgroundWorker1.RunWorkerAsync()
End Subحيث نعيد ProgressBar إلى القيمة صفر لكى يكون فارغ
ثم نشغل المشار
