السلام عليكم ورحمة الله وبركاته.
يمكننا انشاء Control خاص و إضافة خصائص أو واجهة خاصة له، وبعد ذلك استخدامه في برامجنا أينما أردنا مثل أي Control أخر.
لكن الان لن نتحدث عنه و (هنا) شرح لذلك. بل سنقوم بإضافة خصائص لـControl موجود من قبل.
سنقوم بإنشاء Button خاص بنا مع Property و واجهة خاصة له مع الوراثة من الـButton الموجود الذي نستخدمه كثيرا.
إنشاء المشروع:
- بعد تشغيل Visual Studio انتخب Windows Forms Control Library (من File->New->Project وثم Visual C#->Windows ).
- واكتب اسم للمشروع مثل PomodoroButtonLibrary.
- الان في Solution Explorer انقر باليمين على UserControl1.cs وثم Rename لتقوم بتغيير اسمه بـ Pomodoro.cs. (وبالمناسبة pomodoro هي كلمة ايطالي وتعني الطماطم :-) ولها علاقة بما سنصنع قادما). لا تنسى بالضغط على Yes.
- في Solution Explorer انقر باليمين على الطماطم وثم انتخب View Code.
- ابحث بين الاكواد عن public partial class Pomodoro وبما أن Button ـنا سيورث من Button قم بتغيير UserControl إلى Button.
- ثم مرة اخرى في Solution Explorer انقر مرتين على Pomodoro.Designer.cs تحت Pomodoro.cs. احذف خط AutoScaleMode من مثد InitializeComponent لأنه لا يوجد في Button Control.
الان لو نظرت بـPomodoro.cs [design] tab ولن تجد شيء هناك لا تقلق، لا خطأ في عملك.
إضافة خصائص جديدة:
بعد المرحلة السابقة الزر سيكون مثل الزر الموجود في Toolbox لكن يمكننا اضافة خصائص جديدة به وهذا ما نريده.
في Solution Explorer انقر باليمين على Pomodoro.cs وثم View Code.
هنا يمكننا اضافة اي Property جديد للزر (أو أي شيء أخر مثل مثد أو متغير، أي شيء).
أنا سأقوم بانشاء Property جديد ليتاح بي امكانية تغيير Style الزر.
الخيارات ستكون ثابتة و5 لذا:
public enum Styles
{
Reset = 0,
Pause = 1,
Play = 2,
Working = 3,
BreakTime = 4
}وثم متغير و property:
private Styles buttonStyle;
public Styles ButtonStyle
{
get
{
return buttonStyle;
}
set
{
buttonStyle = value;
switch (value)
{
case Styles.Reset:
this.Image = PomodoroButtonLibrary.Properties.Resources.Reset;
break;
case Styles.Pause:
this.Image = PomodoroButtonLibrary.Properties.Resources.PauseButton;
break;
case Styles.Play:
this.Image = PomodoroButtonLibrary.Properties.Resources.PlayButton;
break;
case Styles.Working:
this.Image = PomodoroButtonLibrary.Properties.Resources.Working;
break;
case Styles.BreakTime:
this.Image = PomodoroButtonLibrary.Properties.Resources.BreakTime;
break;
}
}
}الان في Properties Window سيكون property جديد بإسم ButtonStyle ومن خلاله يمكننا تغيير شكل الزر.
قمت فإضافة 5 صور للزر الى المشروع.
لإضافة صور الى المشروع، اذهب بـ ( Project-> PomodoroButtonLibrary Properties) و ثم Resources. وهناك يمكن اضافة الصور.
وأخيرا اضغط على F6 أو انقر على (Build->Build Solution )
والان الزر جاهز للاستخدام. مبروك عليك!
استخدام الزر
قم بإنشاء مشروع جديد من نوع Windows Form Application. (من هنا Ctrl+Shift+N->Windows Form Application )
كل ما سنفعله هو اضافة الزر بنافذة Toolbox ليكون بجنب البقية. فلذا انقر باليمين على Toolbox وثم Choose Items وثم Browse وثم اذهب الى ملف Bin\debug في مشروع الزر (أو release حسب الاعدادات) وافتح الملف dll.
الزر سيكون في Toolbox الان.


وقمت بإضافة بعض اضافات اخرى بالزر وكل المشروع مع الملف dll موجود في المرفقات.
(بالمناسبة، ماشاء الله، كم كان عمل 7zip رائع، المنتدى لا يقبل ملفات اكبر من 600KB والملف الاصلي كان 1MB ولم يصبح حجم الملف اقل من 700KB في افضل حالة مع WinRAR، لكن مع استخدام 7zip اصبح 156KB!!
من يريد ان يقوم بتنزيل 7zip فليتفضل . ماهو دخل هذا؟ لا أعلم :-) )
المراجع:
Inheriting from a Windows Forms Control
Display a Control in the Choose Toolbox Items Dialog Box
السلام عليكم ورحمة الله