فى هذه الجزئية سنتعرض لبعض البرامج البسيطة مع Mono WinForms
تطبيق بسيط مبنى على WinForms
simple.cs using System.Windows.Forms; using System.Drawing; public class Simple : Form { public Simple() { Text = "Simple"; Size = new Size(250, 200); CenterToScreen(); } static public void Main() { Application.Run(new Simple()); } }
يعرض هذا المثال نافذة صغيرة على الشاشة
using System.Windows.Forms; using System.Drawing;
نستخدم using لإستخدام صف ما من namespace بدون الحاجة لكتابة اسمه بالكامل. مثلا نكتب Form بدلا من System.Windows.Forms.Form
public class Simple : Form { ... }
فى WinForms، اى نافذة او صندوق حوارى هو نموذج Form، وهى الحاوية الأساسية "هدفها احتواء ادوات اخرى"
صفنا Simple يرث Form ليصبح Form هو ايضا "نوعا ما"
Text = "Simple"; Size = new Size(250, 200);
Text و Size هما خواص مسئولة عن النص الظاهر وايضا المساحة، نقوم بتعديل النموذج الخاص بنا حيث عدلنا النص الظاهر الى Simple فى شريط العنوان، والسطر الثانى يقوم بتحديد المساحة "عرض وطول" بالبكسل
CenterToScreen();هذه الطريقة تجعل النافذة فى منتصف الشاشة
static public void Main() { Application.Run(new Simple()); }
عند الترجمة والتشغيل، فإن الطريقة Main هى اول مايتم تنفيذه، فى هذا الكود نقوم بإنشاء كائن من الصف Simple ونقوم بتشغيله
$ gmcs -r:System.Windows.Forms.dll -r:System.Drawing.dll simple.csكيفية ترجمة الملف المصدرى، فى حال عدم ارتكاب اى اخطاء يفترض ان نجد ملف simple.exe فى مجلد العمل الحالى
Figure: Simple
Mono يعنى قرد بالإسبانية، فى حال عدم توفير ايكونة للتطبيق سنجد رأس قرد بصورة افتراضية، سنعرض فى المثال التالى كيف نقوم بتغييرها
icon.cs using System.Windows.Forms; using System.Drawing; using System; public class MForm : Form { public MForm() { Text = "Icon"; Size = new Size(250, 200); try { Icon = new Icon("web.ico"); } catch (Exception e) { Console.WriteLine(e.Message); Environment.Exit(1); } CenterToScreen(); } static public void Main() { Application.Run(new MForm()); } }
المثال يعرض ايكون فى اعلى يسار النافذة، وهى الصورة التى تمثل النافذة فى شريط المهام ايضا
try { Icon = new Icon("web.ico"); } catch (Exception e) { Console.WriteLine(e.Message); Environment.Exit(1); }
يستحسن وضع كل الإدخال/الإخراج بين جزئيتى try, catch لمعالجة الأخطاء. يجب وجود ملف web.ico فى المجلد الحالى
Figure: Icon
التلميج، هو صندوق صغير يظهر على الآداة عندما يترك مؤشر الفأرة بعض الوقت عليها ليعرض وصف صغير لدورها فى التطبيق
tooltips.cs using System; using System.Drawing; using System.Windows.Forms; class MForm : Form { public MForm() { Text = "Tooltips"; Size = new Size(250, 200); ToolTip btnTlp = new ToolTip(); btnTlp.SetToolTip(this, "This is a Form"); Button button = new Button(); btnTlp.SetToolTip(button, "This is a Button Control"); button.Text = "Button"; button.Location = new Point(30, 70); button.Parent = this; CenterToScreen(); } } class MApplication { static void Main() { Application.Run(new MForm()); } }
سننشئ فى المثال تلميحين ل نافذة وزر
ToolTip btnTlp = new ToolTip();ننشئ كائن من الصف ToolTip (سيقوم بتوفير تلميح للأداتين)
btnTlp.SetToolTip(this, "This is a Form");نحدد نص التلميح الخاص بالنافذة "للحصول على الكائن الحالى نستخدم this” بإستخدام الطريقة SetToolTip
btnTlp.SetToolTip(button, "This is a Button Control");ونحدد نص التلميح الخاص بالزر ايضا
Button button = new Button(); btnTlp.SetToolTip(button, "This is a Button Control"); button.Text = "Button"; button.Location = new Point(30, 70); button.Parent = this;
لاحظ انشاء الزر، الخاصية Text مسئولة عن النص الظاهر عليه، وlocation الموقع x, y واخيرا نقوم بتحديد الأب بإستخدام الخاصية Parent
Figure: Tooltips
فى مثالنا الأخير سنتعرض للزر
button.cs using System; using System.Drawing; using System.Windows.Forms; class MForm : Form { public MForm() { Text = "Button"; Size = new Size(250, 200); Button button = new Button(); button.Location = new Point(30, 20); button.Text = "Quit"; button.Click += new EventHandler(OnClick); button.MouseEnter += new EventHandler(OnEnter); Controls.Add(button); CenterToScreen(); } void OnClick(object sender, EventArgs e) { Close(); } void OnEnter(object sender, EventArgs e) { Console.WriteLine("Button Entered"); } } class MApplication { public static void Main() { Application.Run(new MForm()); } }
كل برمجة الواجهات مبنية على الأحداث، فى مثالنا نعرض زر على نافذة. فيصغى الزر لحدثين وهما Click و MouseEnter
button.Click += new EventHandler(OnClick); هذا السطر يربط معالج الحدث بالحدث "اى عند حدوث الحدث Click يتم استدعاء المعالج له وهو الطريقة OnClick”
button.MouseEnter += new EventHandler(OnEnter);وعند الدخول الى منطقة الزر بمرشر الفأرة يتم اطلاق الحدث MouseEnter، لذا وبنفس الكيفية نقوم بربط الحدث MouseEnter بمعالج الحدث OnEnter
void OnClick(object sender, EventArgs e) { Close(); }
الطريقة Close مسئولة عن الإغلاق
void OnEnter(object sender, EventArgs e) { Console.WriteLine("Button Entered"); }
عند الدخول الى منطقة الزر بالمؤشر يتم طباعة Button Entered فى الترمنال بإستخدام الطريقة WriteLine
فى هذه الجزئية عرضنا بعض الأمثلة التقديمة لتبدأ مع WinForms
Home ‡ Contents ‡ Top of Page