كيفية برمجة شريط تقدم ProgressBar مخصص
اليوم سوف نشرح الطريقة الأخرى من انشاء أداة تحكم خاصة بك
الطريقة التي شرحناها سابقاً كانت عنطريق الوراثة
الطريقة هذه ستكون عنطريق User Control
المثال الذي سيتم شرحه لموضوع اليوم
انشاء أداة شريط التقدم Progress Bar مع إضافة ميزة جديدة لهذه الأداة
وهي اظهار النسبة المئوية لشريط التقدم تابع معي .....
قم بانشاء مشروع بعد ان يتم فتح المشروع اذهب الى قائمة project و اختار
Add User Control
في واجهة تصميم User Control قم بإضافة
ProgressBar
Lable
بهذا الشكل:1

قم بإضافة الأدوات
ابدا ProgressBar
وقم بتعديل خصائصها أولا ومن ثم قم بإضافة lable واعمل الخصائص كما في الشكل
بعد ان تتم بإضافة الأدوات وتعديل خصائصهن
اضغط F7 للدخول الى الكود لبدء البرمجة
الكود :
تقوم بكتابة هذه الخصائص داخل كلاس userControl الي انت قمت بإنشائه
public int Value
{
get { return progressBar1.Value; }
set
{
progressBar1.Value = value;
UpdateLabel();
}
}
public int Maximum
{
get { return progressBar1.Maximum; }
set { progressBar1.Maximum = value; }
}
public int Step
{
get { return progressBar1.Step; }
set { progressBar1.Step = value; }
}
public void PerformStep()
{
progressBar1.PerformStep();
UpdateLabel();
}
private void UpdateLabel()
{
label1.Text = (Math.Round((decimal)(progressBar1.Value * 100) /
progressBar1.Maximum)).ToString();
label1.Text += "% Done";
}
{
get { return progressBar1.Value; }
set
{
progressBar1.Value = value;
UpdateLabel();
}
}
public int Maximum
{
get { return progressBar1.Maximum; }
set { progressBar1.Maximum = value; }
}
public int Step
{
get { return progressBar1.Step; }
set { progressBar1.Step = value; }
}
public void PerformStep()
{
progressBar1.PerformStep();
UpdateLabel();
}
private void UpdateLabel()
{
label1.Text = (Math.Round((decimal)(progressBar1.Value * 100) /
progressBar1.Maximum)).ToString();
label1.Text += "% Done";
}
توفر أداة التحكم المخصص الوصول الى ثلاث خصائص من أداة التحكم ProgressBar
(القيمة & الحد الأقصى & الخطوة ) ودالة تقوم بتنفيذ الخطوة (النسبة المئوية)
في كل مرة يتغير شريط التقدم (إما عن طريق تعديل الخاصية Value أو استدعاء
الدالة PerformStep ())
تقوم الخاصية او الدالة باستدعاء الدالة UpdateLabel ()
والتي
تغير النسبة المئوية لتعكس التقدم الحالي. هذا يضمن أن lable دائمًا
يظل متزامنًا تمامًا مع شريط التقدم
بعد الانتهاء من برمجة الأداة
اضغط Ctrl+Shift+B
لكي يتم بناء المشروع واضافة الأداة الجديدة الى ToolBox
الان ارجع الى واجهة التصميم Form1 واضف الأداة الخاصه بك من ToolBox
واضف هذه الأداة الى الفورم timer
قم بتعديل خصائص timer
(القيمة & الحد الأقصى & الخطوة ) ودالة تقوم بتنفيذ الخطوة (النسبة المئوية)
في كل مرة يتغير شريط التقدم (إما عن طريق تعديل الخاصية Value أو استدعاء
الدالة PerformStep ())
تقوم الخاصية او الدالة باستدعاء الدالة UpdateLabel ()
والتي
تغير النسبة المئوية لتعكس التقدم الحالي. هذا يضمن أن lable دائمًا
يظل متزامنًا تمامًا مع شريط التقدم
بعد الانتهاء من برمجة الأداة
اضغط Ctrl+Shift+B
لكي يتم بناء المشروع واضافة الأداة الجديدة الى ToolBox
الان ارجع الى واجهة التصميم Form1 واضف الأداة الخاصه بك من ToolBox
واضف هذه الأداة الى الفورم timer
قم بتعديل خصائص timer
Enabled = true 
Interval = 1000
Interval = 1000
افتح حدث Tick  للاداة Timer 
واكتب الكود التالي
واكتب الكود التالي
private void timer1_Tick(object sender, EventArgs e)
{
userControl1.PerformStep();
if (userControl1.Maximum == userControl1.Value)
{
timer1.Stop();
}
}
{
userControl1.PerformStep();
if (userControl1.Maximum == userControl1.Value)
{
timer1.Stop();
}
}
الان قم بالتنفيذ Run
تعليقات
إرسال تعليق