الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة استخدام Progressbar اثناء عمل البرنامج

بدأه mardi في 10 سبتمبر 2008 · 3 رد · 844 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لدي برنامج يأخذ وقت في التنفيذ

لذلك اريد وضع ProgressBar

وقد استخدمت timer لبدء تنفيذ ال ProgressBar

المشلكة ان ال ProgressBar لا يتحرك الا بعد انتهاء البرنامج

وقد استخدمت الكود التالي

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
		If ProgressBar1.Value < ProgressBar1.Maximum Then
			ProgressBar1.Value = ProgressBar1.Value + 1
		Else
			ProgressBar1.Value = ProgressBar1.Maximum
			Timer1.Enabled = False
		End If
	End Sub

وهذا نموذج مصغر للبرنامج

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

		ProgressBar1.Value = 0
		Timer1.Enabled = True

		'مجموعة من الأوامر تأخد وقت في التنفيذ
		Dim a As Double
		a = 0

		Do Until a > 20000
			a = a + 0.0001
		Loop

		MsgBox("تم تنفيذ المهمة")

	End Sub

ارجو مساعتي في حل المشكلة وشكرا

البرنامج في المرفقات

ProgressBar.rar

تم تعديل هذه المشاركة بواسطة mardi في 10 سبتمبر 2008 في 02:23

#2

هذا لان البرنامج ينشغل بتنفيذ الكود الخاص بالعملية و الحل هو وضع العملية في ثرد خاص بيها

			Dim MyThread As New System.Threading.Thread(AddressOf YourFunction)
		MyThread.Start()

ووضع العملية الطويلة في فنشن او سب منفرد

Sub YourFunction()
		Dim A As Int64 = 0
		Dim Sum As Int64 = 0
		Do
			If ProgressBar1.Value = ProgressBar1.Maximum Then
				ProgressBar1.Value += 1
			Else
				ProgressBar1.Value = 0
			End If
			Sum = Sum + A
		Loop While (A = 1000000000000000000)
	End Sub
#3

تفضل هذا كود برنامجك بعد التعديل وأصبح الـ ProgressBar يعمل

Public Class Form1

	Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

		ProgressBar1.Value = 0

		'مجموعة من الأوامر تأخد وقت في التنفيذ
		Dim a As Double
		a = 0

		Do Until a > 20000
			a = a + 0.0002
			ProgressBar1.Value = CInt((100 * a) / 20000)
		Loop

		MsgBox("تم تنفيذ المهمة")

	End Sub


End Class

تم تعديل هذه المشاركة بواسطة محمد سامر أبو سلو في 10 سبتمبر 2008 في 17:11

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#4

شكرا لكم وجزاكم الله خيرا

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…