#1
|
||||
|
||||
الدرس الثاني والخمسون : Windows Forms - دورة .net 2008
بسم الله الرحمن الرحيم . السلام عليكم ورحمة الله وبركاته . خلال هذه السلسلة ، كانت الخطة أنني اقوم بالانتهاء من شرح جميع النقاط الغير متعلقة بالواجهات من خلال Console ، وكان موعدنا الاسبوعي مع ADO.net ، لكننا سنأجل هذه الدروس لنتعرف على الواجهات وما يتعلق بها من تقنيات مثل WPF ، قبل ان نعود لنواصل دروسنا من خلال الواجهات ونكمل النقاط المتبقية لنا وهي : - Object Serlization And XML . - ADO.net . - LINQ . - WCF . - WWF . - وأخيراً ASP.net . - ختم الحلقات ببعض المواضيع العامة اضافة إلى مشروع . لذا فهذا هو جدولنا بعد الانتهاء من الواجهات خلال هذا الاسبوع إن شاء الله ... مقدمة : تعتبر الكلمة Viusal التي اصبحت متلازمة مع اغلب لغات البرمجة هي الحل السحري لمشاكل تصميم واجهات مناسبة للمستخدم ، في عصر ما قبل لغات البرمجة Visual كنت ستكون مجبر على رسم واجهاتك بالكود ، مع ما يعنيه ذلك من صعوبة وتأخير في وقت التنفيذ اضافة إلى انخفاض مستوى التصميم . في .net جاءت المكتبة System.Windows.Forms لتقدم لك كل ما تحتاج إليه لتصميم واجهة مناسبة ، هناك أيضاً مجموعة دوال API تعرف باسم GDI+ تمكنك من زيادة كفاءتك الرسومية من خلال مجموعة من الأوامر المخصصة للرسومات 2D ، أخيراً ومع .net 3.0 جاءت لنا مايكروسوفت بتقنية Windows Presentation Foundation او ما تعرف اختصاراً باسم WPF لتزيد من كفاءة الرسوميات ضمن تطبيقات البرمجة لحد مرتفع جداً . في دورسنا لهذا الاسبوع سوف نبدأ بالتعرف على System.Windows.Forms وربما على ال GDI+ أيضاً ، في حين سنترك عالم WPF للاسابيع القادمة إن شاء الله . بناء Windows Forms بالكود : قبل أن نبدأ باستخدام المعالجات الجاهزة التي وفرتها لنا مايكروسوفت ضمن Visual Studio ، يفضل ان نقوم بمحاولة بناء نموذج بعيداً عنها حتى نستطيع فهم كيفية عمل Windows Forms . لذا قم بفتح المفكرة Notepad ، قم بانشاء ملف مثلاً باسم WindowsForms.cs ، ومن ثم سنبدأ في كتابة الكود . أولاً سنقوم بتعريف كلاس مشتق من الفئة Forms بالشكل التالي مثلاً : C#: كود PHP:
كود PHP:
C#: كود PHP:
كود PHP:
كود PHP:
والآن بامكاننا التحكم في بعض الخصائص ، مثل الطول والعرض . الشفافية .... الخ من الخصائص أو حتى تنفيذ الأوامر التي يمكن الوصول إليها من خلال Object Browser بالشكل التالي مثلاً : لذا نجد ان بامكاننا مثلاً تغيير الطول والعرض وتوسيطه ، لذا سيكون كود الفورم بالشكل التالي : C#: كود PHP:
كود PHP:
C#: كود PHP:
كود PHP:
اضافة أدوات بالكود : تعلمنا رسم الفورم بالكود ، جاء الدور الآن على وضع الأدوات المختلفة على الفورم ، يتم ذلك بالواقع من خلال الأوامر التالية : Add() AddRange() لعمليات الاضافة . Clear() حذف الجميع . Count عدد الادوات ، في الواقع هذه الخاصية مفيدة جداً عند محاولات المرور على الأدوات . Remove() RemoveAt() للحذف . أما الأدوات التي يمكنك اضافتها ، فجميعها موجود تحت الفئة System.Windows.Forms ، حيث تجد كل الادوات التي تعودت على رؤيتها ... مثال : اضافة قائمة File - Exit : سنحاول الوصول للشكل التالي حيث يمكن الخروج بالضغط على زر Exit في القائمة : الكود سيكون بسيطاً ، سنقوم بتعريف MenuStrip للقائمة ومن ثم ToolStripMenuItem لعناصر القائمة : C#: كود PHP:
كود PHP:
C#: كود PHP:
كود PHP:
C#: كود PHP:
كود PHP:
C#: كود PHP:
كود PHP:
C#: كود PHP:
كود PHP:
C#: كود PHP:
كود PHP:
c#: كود PHP:
كود PHP:
انشاء فورم عن طريق Viusal Studio.net : فقط افتح Visual Studio 2008 ، من قائمة File-New قم باختيار Windows Forms Application : الآن من القائمة الجانبية Tool Box اختر MenuStrip ، ستجد الشكل التالي : الآن وكما فعلت قم بالتفرع كما تريد وتصميم القائمة ، عند الضغط مرتين على العنصر Exit ستجد الأمر جاهزاً للكتابة بالشكل التالي : الآن اكتب الكود ، ومن ثم اضغط على F5 وجرب . والآن ألا تتفق معي أن الوضع أصبح أسهل كثيراً .... في الدرس القادم سوف نتعرف على التعامل مع الواجهة الرسومية وما يتعلق بها ، قبل ان ننتقل للأدوات والخصائص في موجز سريع ... الآن ، سنتعرف على محتويات الواجهة الرئيسية . في مرحلة سابقة من الدروس تعرفنا على بعض النقاط في واجهة Visual Studio ، الآن سنواصل التعرف على النقاط الخاصة بالواجهة الرسومية . ToolBox : يحتوي على الأدوات الرئيسية التي نحتاج اليها ، لو لم يكن ظاهراً يمكننا اظهاره من View - ToolBox . أهم الادوات التي نحتاج إليها موجودة تحت التبويب All Windows Forms ، مع ذلك ما زال بامكاننا اضافة تبويب جديد واضافة أدوات أخرى إليه ، عن طريق Add Tab ومن ثم Choose Item واختيار العنصر الذي ترغب فيه : Tabs Group : يحتوي على جميع ما قمت بفتحه ، حيث يمكنك التنقل بينها . Properties Windows : تجد فيها الخصائص التي ترغب في تعديلها لأي عنصر يتم تحديده على الفورم ، هذه الصورة توضح خصائص احد عناصر القائمة : Solution Explorer : يمكنك من تصفح محتويات مشروعك من نوافذ Forms أو فئات Classes او حتى صور و Resources : Class View : استعراض الفئات الموجودة لديك وخصائصها ودوالها وخلافه . كيف يعمل ال Visual Studio.net في انشاء النماذج ؟ بنفس الطريقة التي تعلمناها بالكود ، ستجد لديك من قائمة Solution Explorer ثلاثة ملفات : Form1.cs : سيمكنك من التحكم في الفورم يدوياً عن طريق الوضع [Design] ايضاً تجد الأكواد التي قمت بكتابتها في هذا الملف ، يقوم كثير من المبرمجين بالتبديل بين الوضعين بالتنقل من القائمة العلوية ، او الضغط مرتين على اي اداة لفتح الكود الخاص بها . يمكنك عمل ذلك بطريقة مثالية عن طريق الضغط على الفورم بزر الماوس الأيمن واختيار الوضع Design - Code أو حتى Class Diagram . Form1.Designer.cs : هنا تجد الاكواد الخاصة بانشاء الأدوات والفورم ، لو قمت بفتحه ستجد اكواداً شبيهة بتلك التي استخدمناها في الجزء الأول من هذا الدرس : Form1.rex : يحتوي على المصادر المستخدمة وخلافه . الفئات الرئيسية لعناصر Windows.Forms : الفورم هو العنصر الاساسي في هذه الفئة ، وهو مشتق من الفئات التالية : System.Object العنصر الاساسي لكل كائنات .net System.MarshalByRefObject. لنتمكن من الوصول byref إلى الفورم System.ComponentModel.Component لثالث مشتق من ال Interface المسمى IComponent System.Windows.Forms.Control. سنتناوله بالتفصيل لاحقاً . System.Windows.Forms.ScrollableControl من اجل استخدام ال Scrolls ، اي عنصر مشتق منها يمكن ان يتمتع بهذه الخاصية . System.Windows.Forms.ContainerControl من اجل جعله يمكن ان يحتوي على Controls أخرى ، اي عنصر مشتق منها يمكن ان يحتوي بداخله على عناصر أخرى . System.Windows.Forms.Form سنتناوله بالتفصيل لاحقاً . ذكرنا أن ال Form مشتق من الفئة System.Windows.Forms.Form ، لذا فإن جميع خصائص ودوال وأحداث هذه الفئة تنتقل له بالتبعية ، وهي ما سنتعرف عليها الآن : خصائص الفئة Form : AcceptButton : تحديد الزر الذي يتم تنفيذ أوامره عند ضغط المستخدم على Enter . ActiveMDIChild : عندما يكون للفورم أبناء ، يتم هذا لتحديد الإبن النشط . IsMDIChildIsMDIContainer : لتحديد امكانية جعل هذا الفورم حاضن لفورمات أخرى . CancelButton : تحديد الزر الذي يتم تنفيذ أوامره عندما يضغط المستخدم على زر Esc . ControlBox : تحديد هل للفورم Control Box أم لا . FormBorderStyle : تحديد شكل حدود الفورم . Menu : تحديد القائمة الرئيسية للفورم . MaximizeBox : عرض زر التكبير والتصغير أم لا ، ستجد واحدة أخرى باسم Minimize لعرض زر وضعه في الشريط السفلي . ShowInTaskbar : تحديد العرض في الشريط السفلي للويندوز أم لا . StartPosition : تحديد نقطة البداية للفورم عند ظهوره لأول مرة ، يتم اختيارها من enumeration المسمى FormStartPosition والذي يحتوي على العناصر التالية : WindowState : تحديد حالة الفورم والتي يتم اختيارها من ال enumeration المسمى FormWindowState والذي يحتوي على العناصر التالية : دوال الفئة Form : Activate() : لتنشط الفورم . Close() : اغلاق الفورم . CenterToScreen() : وضع الفورم في منتصف الشاشة . LayoutMDI() : تحديد نظام عرض الشاشات الأبناء في حالة وجودها ShowDialog() : عرض الفورم بصورة Dialog بحيث لا يمكن الرجوع لما خلفها إلا بعد اغلاقها . أحداث الفئة Form : Activated : ينطلق هذا الحدث عندما يتم تنشيط الفورم سواء بأمر Activate او عندما يقوم المستخدم بجعله النافذة النشطة على سطح مكتبه . Closing : عندما يبدأ حدث الإغلاق . Closed : عندما ينتهي حدث الإعلاق . Deactivate : عندما يذهب التحكم إلى شيء آخر غير الفورم . Load : عندما يتم تحميل الفورم ، ولكن ينطلق هذا الحدث قبل ظهور الفورم على الشاشة أصلاً - لتجنب واحد من أكثر الأخطاء شيوعاً - . MDIChildActive : عند تحديد واحد من الشاشات الأبناء في حالة وجودها . كما ذكرنا ايضاً سابقاً ، فإن الفورم مشتق من الفئة Controls ، ولذا فهو يتمتع بكافة مميزاتها والتي سنستعرضها هنا . خصائص الفئة Controls : BackColor : لون الخلفية . ForeColor : لون النص الداخلي . BackgroundImage : خلفية صورة . Font : الخط وحجمه ونوعه وخلافه . Cursor : نوع المؤشر الذي يظهر عند العبور فوق الأداة أو الفورم . Anchor : للتعامل مع خاصية ال Dock والتي تثبت مكان الادوات على الفورم مهما تغير حجم الفورم . AutoSize : حجم تلقائي للاداة حسب محتوياتها . Top : موضع الاداة او الفورم من الحد العلوي للاب. Left : موضع الاداة او الفورم من الحد الأيسر للأب . Bottom : موضع الاداة او الفورم من الحد الأسفل للأب . Right : موضع الاداة او الفورم من الحد الأيمن للأب . Bounds : الحدود . ClientRectangle : من مربع . Height : الطول . Width : العرض . Enabled : تحديد امكانية التحكم بالأداة او الفورم من عدمه . Visible : الظهور والاختفاء . ModifierKeys : قراءة حالة ال ModifierKeys مثل ال Alt و Ctrl و Shift . MouseButtons : معرفة الزر المضغوط من الماوس ( أيمن - ايسر - المنتصف ) . TabIndex: تحدد ترتيب العناصر للانتقال بينها بواسطة زر Tab . TabStop : منع الوصول للعنصر من خلال زر Tab . Opacity : درجة الشفافية ما بين 0 و 1 . Text : النص المعروض داخل الاداة . Controls : تمكنك من الوصول للاداوات الداخلية في حالة كان العنصر قادراً على استيعاب عناصر داخله . أحداث الفئة Controls : Click : الضغط بالماوس . DoubleClick : ضغطتين بالماوس . MouseEnter : دخول الماوس . MouseLeave : خروج الماوس من نطاق الاداة . MouseDown : ضغط زر الماوس لاسفل . MouseUp : رفع الاصبع عن ضغطة زر الماوس . MouseMove : عبور الماوس فوق نقطة . MouseHover MouseWheel : الضغط على ال Wheel KeyPress : ضغط زر . KeyUp : ضغط زر لاسفل . KeyDown : رفع الاصبع عن الزر المضغوط . DragDrop : سحب اداة فوق . DragEnter : دخول اداة لمجال اداة أخرى . DragLeave : خروج . DragOver : عبور فوق . Paint : حدث الرسم . ذكرنا في الدرس السابق بإننا سنقوم باستعراض الأدوات ، أول نقطة عليك معرفتها هي أن كل الأدوات مشتقة من الفئة Controls لذا فإن أي أداة ستتمتع بالخصائص والأحداث التي قمنا بشرحها في الدرس السابق مباشرة . الآن سنستعرض بعض الأدوات الرئيسية لدينا . Button : زر أمر عادي جداً ، يحتوي على بعض الخصائص مثل : FlatStyle : تحديد مظهر زر الأمر . TextAlign : موضع النص من زر الأمر . CheckBox : زر الاختيار المتعدد ، يمكننا اختيار عدة عناصر ، يحتوي على خصائص اضافية مثل : CheckState : حالة الاختيار . ThreState : لتحديد كونه يحمل خاصية ثالثة ( مفعل - غير مفعل - مفعل جزئياً ) . RadioButton : مثل السابق ولكنه يسمح لك باختيار واحد ، لو كنت تريد استخدامه لأكثر من مرة ضع كل منهم في panel مختلف . ComboBox و ListBox . قائمة للاختيار من ضمن خيارات ، الاولى في صف واحد والثانية حسب الحجم المطلوب . يحتوي على جميع الخصائص التي تعلمناها في Collection.List مثل Items.Add و Items.Remove .... الخ . Textbox : أداة نصية تسمح للمستخدم بالكتابة داخلها ، بعض خصائصها الاضافية . ReadOnly : جعلها للقراءة فقط . PasswordChar : الرمز الذي يظهر في حالة جعل مربع النص للادخال . MultiLine : السماح بجعلها متعددة الأسطر . maxLength : الطول الاقصى للنص . ScrollsBar : اشرطة التمرير حيث انها مشتقة من الفئة System.Windows.Forms.ScrollableControl ، لذا سيكون بامكاننا اختيار وضع من ال enumeration المسمى ScrollBars : لمعرفة المزيد عن هذه الاداة يمكن مراجعة درس الاخ أحمد بدر هنا : http://vb4arab.com/vb/showthread.php?t=4763 Label : أداة لعرض النصوص . GroupBox و Panel : أدوات حاوية يمكن وضع أدوات أخرى بداخلها . RichTextBox : أداة نص تسمح لمحتوياتها ان تحتوي على تنسيقات مختلفة ، الفارق بينها وبين TextBox هو الفارق بين Notepad و Wordpad ، تحتوي على الخصائص الاضافية التالية : Wordwrap : لتحديد التفاف النص . Select : لتحديد جزء من النص عن طريق نقطة بداية ونهاية ، او نقطة بداية وطول . SelectionXXX : لتحديد تنسيق خط للجزء المحدد ، مثل اللون SelectionColor . كما يحتوي على الدوال الاضافية التالية : LoadFile : لفتح ملف نصي من مسار معين . SaveFile : لحفظ الملف في مكان معين . يمكنك التعرف على المزيد عنها من خلال درس الأخ أحمد بدر هنا : http://vb4arab.com/vb/showthread.php?t=4638 Timer : أداة للمؤقت ، لها حدث Ticker والذي يتم تنفيذه كل Interval معين ، تفيد في حالة عمل اوامر تكراريه بفوارق زمنية . TreeView : لعرض أداة الشجرة ، عنصرها الاساسي هو Nodes والذي يمكن من خلاله اضافة أي عناصر وحذفها . Progressbar : لعرض مؤشر التقدم ، خصائصه الاساسية هي Minimum - Maximum لتحديد الحد الأعلى والأدنى اضافة للخاصية Step لتحديد مقدار التقدم كل مرة ، يمكنك تحديد style لعملية التقدم من خلال الخاصية Style والتي تقرأ من ال enumeration المسمى ProgressBarStyle . يمكن تحديد الخاصية لاحقاً باستخدام الخاصية Value . يمكنك التعرف على المزيد عنها من خلال درس الأخ أحمد بدر هنا : http://vb4arab.com/vb/showthread.php?t=4810 Trackbar : مشابه لل Progressbar لكنك انت من تتحكم بقيمته ، مثل Trackbar الخاص برفع وخفض الصوت . DateTimePicker أداة لاختيار التواريخ والأوقات ، يمكنك التعرف على المزيد عنها من خلال درس الأخ أحمد بدر هنا : http://vb4arab.com/vb/showthread.php?t=4761 الأدوات كثيرة جداً ولا جدوى من اضاعة الوقت في التعرف على تفاصيلها ... لذا أكتفي بأن احيلك إلى موقع مايكروسوفت حيث تجد شرحاً تفصيلياً لكل أداة : http://msdn.microsoft.com/en-us/libr...65(VS.71).aspx هناك عناصر أخرى هي ال Dialogs سنتعرف عليها في مرة قادمة إن شاء الله ... راحة قصيرة أعود بعدها للإكمال إن شاء الله ... Dialogs : في بداية موضوعنا عن المربعات الحوارية سنقوم أولاً بتصميم واحد خاص بنا ، ثم في المرحلة الثانية سنقوم بالتعرف على استخدامات بعض المربعات الحوارية الشائعة . قم بانشاء فورم جديد ، قم بالغاء خاصية ال resizeable ، قم بضبط خاصية FormBorderStyle إلى FixedDialog ، قم باخفاء MinimizeBox و MaximizeBox ... بهذه الطريقة يكون تصميم أغلب المربعات الحوارية . الآن قم بتصميم المربع الحواري كما يحلو لك ، في اي مربع حواري أو Dialog يكون الناتج واحداً من العناصر المعرفة في enumeration المسمى DialogResult والذي يحتوي على القيم التالية : رمز: Abort, Cancel, Ignore, No, None, OK, Retry, Yes لضبط الزر الذي يعيد القيمة OK نضبط خاصية ال AcceptButton للفورم على الزر المختار . ايضاً الامر بسيط بالنسبة للخاصية Cancel حيث نجد الخاصية CancelButton . لاظهار فورم بصورة مربع حواري Dialog نستخدم الأمر ShowDialog بالشكل التالي مثلاً : رمز: newDialog.ShowDialog() ولكن وبما اننا بحاجة لقراءة القيم الناتجة عنه ومعرفة اي زر تم اختياره ، سنكتب الكود الخاص بنا بالشكل التالي على سبيل المثال : C#: كود PHP:
كود PHP:
كود PHP:
النوع الابسط والأسهل من ال Dialogs هو رسائل التحذير MessageBox ، صورتها الأبسط بالشكل التالي : كود PHP:
- اظهار رسالة تحذيرية كاملة : الكود : كود PHP:
- اظهار رسالة تحذيرية تخيرك بين عدة حالات ، مع جعل واحد منها افتراضياً . C#: كود PHP:
كود PHP:
http://msdn.microsoft.com/en-us/libr...ebox.show.aspx Dialogs Controls . بعد ان تعرفنا على النوع الأبسط من المربعات الحوارية وتعلمنا كيفية انشاءها ، جاء الدور الآن على تعلم كيفية استخدام المربعات الحوارية الأساسية الموجودة ضمن الأدوات ... Color Dialog : مربع اختيار الألوان ، قم باضافته من ال ToolBox وسننشأ الآن مثالاً بسيطاً لتغيير لون الخلفية لصورة مثلاً : ضف صورة picturebox زر أمر بسيط واكتب فيه الأمر التالي : C#: كود PHP:
كود PHP:
والخاصية fullopen التي تظهرها بالكامل مباشرة بالشكل التالي مثلاً : رابط تفصيلي من مايكروسوفت : http://msdn.microsoft.com/en-us/libr...lordialog.aspx Font Dialog : يستخدم لاختيار الخطوط ، سنقوم الآن بعمل مثال لتغيير خط مربع نص : C#: كود PHP:
كود PHP:
رابط تفصيلي من مايكروسوفت : http://msdn.microsoft.com/en-us/libr...og(VS.80).aspx Open And Save Dialogs : اشهر نوعين من المربعات الحوارية ، في العادة يتم استخدامهم لتحديد عملية فتح الملفات أو تحديد مكان حفظها ، سنقوم بعمل مثال بسيط نقوم من خلال بفتح ملف نصي ، التعديل عليه ومن ثم حفظه : اضف مربع نص بسيط واجعل خاصية Multiline=True ، ضف زر للحفظ وآخر للفتح ، وأخيراَ لن نقوم باضافة OpenFileDialog و SaveFileDialog بل سنضيفهم من خلال الكود مباشرة . أول عملية لدينا هي استخدام المربع الحواري لتحديد الملفات النصية ومن ثم اختيار واحد منها : C#: كود PHP:
كود PHP:
C#: كود PHP:
كود PHP:
C#: كود PHP:
كود PHP:
C#: كود PHP:
كود PHP:
هناك بعض الخصائص الاضافية لكلا الكائنين ، يمكنك الاطلاع على المزيد عنهما هنا : http://msdn.microsoft.com/en-us/libr...92(VS.71).aspx http://msdn.microsoft.com/en-us/libr...iledialog.aspx حيث يمكنك تحديد نوع من الملفات او قراءة اسم المجلد او اسم الملف فقط ، تحديد أكثر من ملف للفتح ... الخ . print Dialog : يستخدم للتحكم في خصائص عملية الطباعة ، يمكن ان يفيدك الرابط التالي من مايكروسوفت : http://msdn.microsoft.com/en-us/libr...intdialog.aspx إلى هنا نكون قد انتهينا من محتويات هذا الدرس ، في الدرس القادم سنتعرف على كيفية التقاط أحداث الكيبورد والماوس . والله الموفق ... والسلام عليكم ورحمة الله وبركاته .
|
#2
|
||||
|
||||
شـكــ وبارك الله فيك ـــرا لك . موفق بإذن الله
|
#3
|
||||
|
||||
وعليكم السلااااااااااااام
|
|
|
المواضيع المتشابهه | ||||
الموضوع | كاتب الموضوع | المنتدى | مشاركات | آخر مشاركة |
الدرس الثاني والستون : ADO.net - الجزء الثاني - دورة .net 2008 | khaledbelal | دورة .NET 2008 من منتدى فيجوال بيسك للعرب | 3 | 05-03-2011 11:37 PM |
الدرس الثامن والخمسون : Wpf 3d - دورة .net 2008 | khaledbelal | دورة .NET 2008 من منتدى فيجوال بيسك للعرب | 0 | 03-07-2010 02:19 AM |
الدرس السابع والخمسون : Wpf 2d - دورة .net 2008 | khaledbelal | دورة .NET 2008 من منتدى فيجوال بيسك للعرب | 2 | 03-05-2010 06:57 PM |
الدرس الخامس والخمسون : مقدمة إلى Wpf - دورة .net 2008 | khaledbelal | دورة .NET 2008 من منتدى فيجوال بيسك للعرب | 0 | 03-04-2010 06:28 PM |
الدرس الرابع والخمسون : Gdi+ - دورة .net 2008 | khaledbelal | دورة .NET 2008 من منتدى فيجوال بيسك للعرب | 0 | 03-04-2010 06:14 PM |