تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
معلومة --- BackgroundWorker
#4
الآن سنقوم بشئ جديد

هل فكرت تربط أداة 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 إلى القيمة صفر لكى يكون فارغ

ثم نشغل المشار


}}}
تم الشكر بواسطة:


الردود في هذا الموضوع
معلومة --- BackgroundWorker - بواسطة Raggi Tech - 06-10-12, 10:41 PM
معلومة --- BackgroundWorker - بواسطة Raggi Tech - 06-10-12, 10:41 PM
معلومة --- BackgroundWorker - بواسطة Raggi Tech - 06-10-12, 10:41 PM
معلومة --- BackgroundWorker - بواسطة Raggi Tech - 06-10-12, 10:42 PM
معلومة --- BackgroundWorker - بواسطة Raggi Tech - 06-10-12, 10:42 PM
معلومة --- BackgroundWorker - بواسطة Raggi Tech - 06-10-12, 10:42 PM


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم