You are on page 1of 87

1

‫الفصل ا ألول‬
‫مقدمة يف لغة ‪ &C#‬حزمة ‪Visual studio.Net‬‬

‫‪2‬‬
‫‪ ‬مقدمة ‪:‬‬
‫منذ بداية اترخي ظهور احلاس بات الإلكرتونية دعت احلاجة اإىل ظهور لغات برجمة بواسطهتا يمت اإنتاج‬
‫برجميات لتشغيل هذه احلاس بات وتطبيقات برجمية تساعد يف حل مشالكت املس تخدمني يف ش ىت‬
‫جمالت احلياة اليت يس تخدم فهيا احلاسوب لغرض معاجلة البياانت مبختلف مس توايهتا واحلصول عىل‬
‫نتاجئ ومعلومات دقيقة بأأشاكل خمتلفة تليب حاجات املس تخدمني وتريض طموحاهتم وتطلعاهتم ‪.‬‬
‫وقد تزامن تطور لغات الربجمة بشلك رسيع جد ًا يوازي تطور احلاس بات الإلكرتونية بأأنواعها وا ألهجزة‬
‫الإلكرتونية اليت حتتاج ألنظمة تشغيل وتعمل علهيا برامج تطبيقية مثل الهواتف اذلكية وغريها ‪.‬‬
‫ولكام اكنت اإماكنيات لغات الربجمة عالية ا ألداء وذات أأمنية قوية وسهةل الإس تخدام وخمترصة الأكواد‬
‫ومواكبة للتامن التكنولويج واملعلومايت أأنتجت هذه اللغات أأنظمة تشغيل برامج تطبيقية عالية اجلودة‬
‫وتليب رغبات وحاجات املس تخدمني ‪ ...‬من أأفضل و أأروع هذه اللغات لغة ‪. C#‬‬
‫‪ ‬نبذة خمترصة عن لغات الربجمة ‪:‬‬
‫ميكن تصنيف لغات الربجمة اإىل ثالثة أأنواع ‪:‬‬
‫‪ -‬لغات برجمة متدنية املس توى ‪ :‬وتمتثل يف لغة الآةل (‪. )0,1‬‬
‫‪ -‬لغات برجمة متوسطة املس توى ‪ :‬وتمتثل يف لغة التجميع ‪ Assembler‬وكذكل املرتجامت‬
‫‪ Compiler‬واملفرسات ‪ Interpreter‬اخلاصة بلغات الربجمة عالية املس توى ‪.‬‬
‫‪ -‬لغات الربجمة عالية املس توى ‪ :‬ويه لغات الربجمة اليت أأوامرها وإاجراءاهتا قريبة من لغة الإنسان‬
‫وميكن تصنيفها حسب جمال التطبيقات اليت تنتجها مث ًال ‪:‬‬
‫‪//‬لغات الربجمة الإجرائية مثل ‪... , C++ , C , Q Basic‬‬
‫‪ //‬لغات الربجمة اكئنية التوجه مثل ‪... , C# , Java‬‬
‫‪ //‬لغات برجمة قواعد البياانت مثل ‪... , SQL Server , Oracle‬‬
‫‪ //‬لغات الربجمة املرئية مثل ‪... , Visual C#.Net , Visual Basic.Net‬‬
‫‪ //‬لغات تصممي مواقع الإنرتنت مثل ‪... , ASP.Net , PHP , HTML‬‬
‫وغريها من جمالت برجمة احلاسوب ‪.‬‬
‫‪ ‬اترخي لغة ‪: C#‬‬
‫ظهرت لغة ‪ C#‬بشلك منتج برجميتقريب ًا خالل عام ‪2001‬م وقد تبنهتا رشكة ‪ Microsoft‬وسامهت يف‬
‫تطويرها مضن منتج حزمة ‪ Visual Studio.Net‬مع عدة لغات أآخرى حبيث أأدجمت يف منتج‬
‫‪. ... , VS.Net2012 , VS.Net2010 , VS.Net2008 , VS.Net2005‬‬

‫‪3‬‬
‫وتعترب لغة ‪ Visual C#.Net‬من لغات الربجمة متعددة ا ألغراض حبيث ميكن بواسطهتا اإنتاج تطبيقات‬
‫برجمية يف أأكرث من جمال وميكن أأن نذكر أأمه التطبيقات الربجمية اليت تنتجها ‪ VC#.Net‬اكلتايل ‪:‬‬
‫‪ : Console Application -1‬ويمت فيه معل تطبيقات خاصة ابلربجمة الإجرائية والربجمة اكئنية‬
‫التوجه‪ OOP‬وتظهر النتاجئ الربجمية يف هذا التطبيق عىل شاشة الـ ‪. DOS‬‬
‫‪ : Windows Form Application -2‬ويمت فهيا معل تطبيقات خاصة ابلربجمة املرئية وتظهر النتاجئ‬
‫الربجمية يف هذا التطبيق عىل شلك نوافذ تش به تكل املوجودة يف نظام التشغيل ‪. Windows‬‬
‫‪ : )Web(ASP.Net Application -3‬ويمت فهيا تصممي وبرجمة مواقع وصفحات الويب بشلك‬
‫دينامييك حديث حبيث أأصبح ابلإماكن تصممي وبرجمة قواعد البياانت ومعل تطبيقات مرئية ونوافذ‬
‫عىل صفحات الويب مبنتج واحد ‪.‬‬
‫وتوجد تطبيقات أأخرى مثل ‪ WCF , WPF‬وتطبيقات الـ‪,Reporting, DataBase , Office‬‬
‫‪Smart Device‬وغريها من التطبيقات الربجمية الهامة ‪.‬‬

‫‪ ‬حزمة ‪ Microsoft Visual Studio.Net‬الربجمية ‪:‬‬


‫ويه املنتج الرمسي للغات الربجمة متعددة ا ألغراض لـ رشكة ‪ Microsoft‬وتضم عدة لغات برجمة أأمهها ‪:‬‬
‫‪ ... )VC++(Visual C++.Net– )VC#(Visual C#.Net– )VB(Visual Basic.Net‬اإخل ‪.‬‬
‫وميكن حتميل هذه احلزمة الربجمية من ش بكة الإنرتنت عرب موقع ‪ , Microsoft‬اإتبع اخلطوات التالية ‪:‬‬
‫‪ -‬اإفتح برانمج مس تعرض الويب املوجود يف هجازك مث مق بفتح حمرك البحث ‪ Google‬عرب كتابة‬
‫العنوان ‪. www.google.com‬‬
‫‪ -‬اإكتب يف مربع حبث ‪"Microsoft Visual Studio 2008" :google‬‬

‫‪4‬‬
‫‪ -‬تظهر صفحة النتاجئ ومن مضهنا ‪Visual Studio 2008 – Microsoft‬اكلتايل ‪:‬‬

‫اإنقر عىل الرابط ‪ Visual Studio 2008 – Microsoft‬تظهر الصفحة التالية ‪:‬‬ ‫‪-‬‬

‫توجد النسخة الاكمةل من ‪ Microsoft Visual Studio 2008‬وتوجد ثالثة أأزرار ‪:‬‬
‫‪ : Try Now -‬لتحميل نسخة جتريبية من املنتج ‪.‬‬
‫‪ : Buy Now -‬لرشاء نسخة أأصلية من املنتج ‪.‬‬
‫‪ : Contact Us -‬اإتصل بنا للتواصل مع اإدارة موقع ‪ Microsoft‬حول املنتج ‪.‬‬
‫اإتبع التعلاميت بعد النقر عىل أأحد ا ألزرار الثالثة ‪.‬‬
‫‪ //‬مالحظة ‪ :‬ميكن احلصول عىل نسخة من املنتج عىل قرص ‪ DVD‬من حمالت بيع الربامج‬
‫يف منطقتك مع العمل أأن رشكة ‪ Microsoft‬أأنتجت أأكرث من نسخة من املنتج مث ًال اكلتايل ‪:‬‬
‫‪Team , Professional , Express , ….‬‬
‫‪ ‬خطوات تنصيب حزمة ‪ & Microsoft Visual Studio 2008‬مكتبة التعلاميت ‪:MSDN‬‬
‫‪ -‬ضع قرص الـ‪ DVD‬للحزمة يف ‪ CD\DVD Driver‬ومق بعمل قراءة تلقائية أأو من هجاز‬
‫المكبيوتر –<اإفتح قرص ‪ <- CD\DVD‬اإنقر نقر ًا مزدوج ًا عىل امللف ‪Setup‬‬
‫‪5‬‬
‫‪ -‬تظهر انفذة ‪Visual Studio 2008 Setup‬يوجد هبا ثالثة خيارات اكلتايل ‪:‬‬

‫= ‪ : Install Visual Studio 2008‬ابلنقر عليه يبد أأ يف خطوات تنصيب اللغة ‪.‬‬
‫= ‪ :Install Product Documentation‬ابلنقر عليه يقوم بتنصيب مكتبة‬
‫التعلاميت‪ MSDN Library‬اليت توفر صفحات مساعدة ‪ Help‬للمربمج ‪.‬‬
‫= ‪ : Check for Services Releases‬ابلنقر عليه يقوم ابلتحقق من وجود اإصدارات‬
‫اخلدمات اليت تقدهما ‪ . VS.Net‬اإنقر عىل اخليار ا ألول للبدء بعملية التنصيب ‪.‬‬
‫‪ -‬اإنتظرقلي ًالحىت يمت نسخ ملفات التنصيب بعدها تظهر انفذة ترحيبية ابملس تخدم حول تنصيب‬
‫احلزمة اإنتظر حىت هناية التحميل مث اإنقر الزر ‪. Next‬‬

‫‪-‬‬

‫تظهر انفذة حول الإتفاقية ورشوط الرشكة املنتجة يوجد خياران ‪ :‬حدد اخليار ا ألول‬
‫‪ and accept the license termsI have read‬دلةل عىل املوافقة عىل الإتفاقية‬
‫مث اإنقر عىل الزر ‪. Next‬‬

‫‪-‬‬

‫‪6‬‬
‫‪ -‬تظهر انفذة خيارات التثبيت توجد ثالثة خيارات اكلتايل ‪:‬‬

‫= ‪( Default‬اإفرتايض) ‪ :‬ويمت تثبيت الربامج الرضورية من حزمة ‪Visual Studio 2008‬‬


‫واحملددة من قبل الرشكة املنتجة وهو اخليار ا ألفضل ‪.‬‬
‫= ‪( Full‬اكمل) ‪ :‬ويمت تثبيت اكفة برامج حزمة ‪. Visual Studio 2008‬‬
‫= ‪( Custom‬خمصص) ‪ :‬ويف هذه احلاةل يقوم املس تخدم ابإختيار الربامج اليت يريد تثبيهتا من‬
‫احلزمة حسب رغباته وحنتاج يف هذه احلاةل اإىل مربمج حمرتف وممل بعمل لك الربامج يف احلزمة ‪.‬‬
‫حدد عىل ‪ Default‬مث حدد مسار تنصيب احلزمة عىل هجاز المكبيوتر مث اإنقر ‪. Install‬‬
‫‪ -‬تظهر انفذة تنصيب الربامج الواحد تلو الآخر و أأي برانمج يمت تنصيبه تظهر أأمامه العالمة ‪( /‬‬
‫‪ , )true‬اإنتظر لفرتة من الوقت اإىل أأن يمت تنصيب مجيع الربامج ‪.‬‬

‫‪ -‬تظهر انفذة ختربك بأأنه مت تنصيب حزمة ‪ Visual Studio 2008‬بنجاح‬


‫اإنقر عىل الزر ‪. Finish‬‬

‫‪7‬‬
‫‪ ‬لتنصيب مكتبة التعلاميت ‪ MSDN‬عد اإىل هجاز المكبيوتر ‪ <-‬قرص ‪ DVD‬اإنقر عليه ابلزر ا ألمين‬
‫واخرت قراءة تلقائية تظهر كل انفذة اإنقر عىل اخليار الثاين‪–Install Product Documentation‬‬
‫تظهر انفذة ترحبيبية ‪ ...‬اإنقر الزر ‪Next‬‬

‫‪ -‬تظهر انفذة الإتفاقية ‪ ...‬اإنقر عىل اخليار ‪I have read and accept the license terms‬‬
‫مث اإنقر عىل الزر ‪Next‬‬

‫‪ -‬تظهر انفذة اإخرت ‪ Full‬مث حدد املسار و أأنقر عىل الزر ‪Next‬‬

‫‪8‬‬
‫‪ -‬تظهر انفذة ‪ Install page‬لتنصيب ‪ MSDN Library‬كام يف الصورة ‪:‬‬

‫‪ ...‬وانتظر حىت يمت تنصيب الـ ‪ MSDN‬اكمةل بعدها اإنقر الزر ‪. Finish‬‬
‫‪ ‬كيفية فتح حزمة ‪ : Visual Studio 2008‬توجد عدة طرق لفتح حزمة ‪VS.Net‬‬
‫‪ -‬من قامئة اإبد أأ ‪ <-‬اكفة الربامج ‪ < -‬جمدل ‪ <- Microsoft Visual Studio 2008‬أأيقونة‬
‫‪. Microsoft Visual Studio 2008‬‬
‫اإذا اكنت موجودة اكإختصار للغة عىل‬ ‫‪ -‬أأو ابلإماكن النقر نقر ًا مزدوجا عىل ا أليقونة‬
‫سطح املكتب ‪.‬‬
‫‪ -‬تظهر انفذة هتيئة احلزمة بأأي لغة من لغات الربجمة املوجودة مضن احلزمة‬
‫اإخرت ‪ Visual C# Devlopment Setting‬مث اإنقر الزر ‪. OK‬‬
‫‪ -‬تظهر انفذة البداية ‪Start Page‬اكلتايل ‪:‬‬

‫وتتكون من النوافذ التالية ‪:‬‬


‫= ‪ : Recent Projects‬وتضم قامئة بأآخر املشاريع اليت مت العمل علهيا وكذكل الزرين ‪:‬‬
‫‪Open : Project‬‬ ‫) فتح مرشوع موجود مس بق ًا (‬
‫‪Create: Project‬‬ ‫( لإنشاء مرشوع جديد )‬

‫‪9‬‬
‫= ‪ : Getting Started‬ويضم مواضيع عن جديد اللغة يف هذا الإصدار ومواضيع أأخرى ‪.‬‬
‫= ‪ : Visual Studio Developer News‬وحيتوي معلومات حول تطوير اللغة ‪. online‬‬
‫‪ ‬برانجمك ا ألول بلغة ‪: Visual C#.Net‬‬
‫‪ -‬اإنقر عىل ا ألمر ‪Create Project‬تظهر انفذة ‪(New Project‬مرشوع جديد) اكلتايل ‪:‬‬

‫وحتتوي عىل عدة أأجزاء كام ييل ‪:‬‬


‫= ‪ : Project Type‬نوع املرشوع وبأأي لغة برجمة يعمل ‪ ,‬حتت تشجري ‪ Visual C#‬اإخرت النوع‬
‫‪. Windows‬‬
‫= اللسان ‪ .NET Framework 3.5‬وهو الإصدار ا ألخري للمنصة اليت تعمل علهيا لغات الـ‬
‫‪ Visual studio 2008‬وتوجد أأيض ًا الإصدارات السابقة ‪. 2.0&3.0‬‬
‫= ‪ : Template‬نوع قالب املرشوع ‪ ,‬خنتار ‪. Windows Forms Application‬‬
‫= ‪ : Name‬اإمس املرشوع وغالب ًا ما يكون الإمس الإفرتايض ‪WindowsFormsApplication1‬‬
‫مق بتغيري اإمس املرشوع ابإمس ‪. p1‬‬
‫= ‪ : Location‬ماكن حفظ املرشوع وميكن تغيري املسار ابلنقر عىل الزر ‪ Browser‬وحتديد ماكن‬
‫حفظ املرشوع ‪ ,‬اإترك املسار الإفرتايض ‪C:\Users\A3M\Documents\Visual Studio 2008\Projects‬‬
‫= ‪ : Solution Name‬اإمس احلل اذلي ينمتي اإليه املرشوع وغالب ًا ما يكون بنفس اإمس املرشوع‬
‫وميكن تعديهل ‪ ,‬اإترك الإمس الإفرتايض كام هو ‪,‬مث اإنقر عىل الزر ‪. Ok‬‬
‫‪ -‬الآن تظهر لنا بيئة التطوير املتاكمةل ‪ IDE‬واليت يمت فهيا معل املرشوع جبميع املراحل من التصممي‬
‫املريئ وكتابة الأكواد الربجمية وحىت ترمجة املرشوع وتنفيذه ‪.‬‬

‫‪11‬‬
‫الآن س نقوم بتنفيذ الربانمج ا ألول ‪ ,‬عليك اإتباع اخلطوات بدقة ‪:‬‬
‫أأضف أأداة الزر ‪ Button‬من انفذة ا ألدوات اإىل الـ ‪ Form1‬واحسبه اإىل منتصف المنوذج مث‬
‫اإضبط خاصية الـ‪ Text‬هل ابلقمية " أأظهر الرساةل" من خالل انفذة اخلصائص حبيث يظهر اكلتايل‪:‬‬

‫‪ -‬اإنقر نقر ًا مزدوج ًا عىل الـ‪ button1‬لدلخول اإىل انفذة الـ‪ Code‬يظهر احلدث الإفرتايض ‪Click‬‬
‫داخل احلدث اإكتب الكود التايل ‪:‬‬
‫)‪privatevoid button1_Click(object sender, EventArgs e‬‬
‫{‬
‫ً بكم يف ‪MessageBox.Show(" Visual C#.Net‬‬
‫;)" مرحبا‬
‫}‬
‫‪ -‬مق بتنفيذ الربانمج ابلضغط عىل الزر املوجود يف رشيط ا ألدوات أأو ابلضغط عىل املفتاح ‪F5‬‬
‫من لوحة املفاتيح ‪ ,‬تظهر النافذة اإنقر عىل الزر " أأظهر الرساةل" يظهر الشلك التايل ‪:‬‬

‫‪ -‬نالحظ ظهور رساةل بعد النقر عىل الزر اإنقر موافق مث اإخرج من زمن التنفيذ ابلضغط عىل الزر‬
‫أأعىل ميني الـ ‪ , Form‬يعود الربانمج اإىل زمن التصممي ‪.‬‬
‫أأعىل ميني الشاشة أأو من القامئة ‪ , <Exit- File‬يمت‬ ‫‪ -‬للخروج من اللغة اإنقر عىل الزر‬
‫اخلروج من بيئة الـ ‪.Visual studio 2008‬‬

‫‪11‬‬
‫‪ ‬امللف التنفيذي للربانمج ومساره ‪:‬‬
‫اإذهب اإىل جمدل املستندات ‪ <Projects- <Visual Studio 2008-‬نالحظ أأن وجود جمدل ابإمس‬
‫‪ p1‬وهو جمدل مرشوع الربانمج ا ألول اذلي مقنا بعمهل سابق ًا مق بفتح اجملدلات اكلتايل ‪:‬‬
‫‪p1 -> bin -> Debug‬‬
‫نالحظ وجود ‪ 4‬ملفات ‪ ...‬يوجد ملف ابإمس ‪p1‬ابإمتداد‪ exe‬يعترب امللف التنفيذي للربانمج ‪ p1‬مق‬
‫ابلنقر عليه نقر ًا مزدوج ًا تظهر انفذة الـ ‪ Form1‬اإنقر عىل الزر "أأظهر الرساةل" تظهر الرساةل مثل‬
‫اليت ظهرت أأثناء تنفيذ الربانمج أأثناء فتح اللغة ‪ ...‬يعترب هذا امللف نسخة تنفيذية للمرشوع ميكن‬
‫معل اإختصار لها عىل سطح املكتب ليك يمت تشغيهل والعمل عليه بدون احلاجة اإل ادلخول جملدل‬
‫الربانمج أأو فتح حزمة ‪Visual Studio 2008‬وتنطبق هذه العملية عىل مجيع املشاريع اليت يمت‬
‫اإجنازها عىل بيئة ‪. .NET‬‬

‫‪12‬‬
‫الفصل الثاين‬
‫مفاهمي برجمية يف لغة ‪Visual C#.Net‬‬

‫‪13‬‬
‫قبل البدء يف معل املشاريع والربامج بلغة ‪ VC#.Net‬هناك مفاهمي وقوانني برجمية جيب مراجعهتا‬
‫بدقة ليك ل حتدث أأخطاء خالل كتابة الأكواد الربجمية ميكن رسد هذه املفاهمي اكلتايل ‪:‬‬
‫‪ ‬أأنواع البياانت ‪Data Type:‬‬
‫أأمثةل‬ ‫الوصف‬ ‫السعة ابلبايت‬ ‫النوع‬
‫‪00000001 = 1‬‬ ‫ابيت‬ ‫‪1‬‬ ‫‪Byte‬‬
‫‪120 , 0 , -9‬‬ ‫حصيح‬ ‫‪4‬‬ ‫‪Int‬‬
‫‪55 , 0 , -190‬‬ ‫طويل‬ ‫‪8‬‬ ‫‪Long‬‬
‫‪5f , -22f‬‬ ‫حقيقي‬ ‫‪4‬‬ ‫‪Float‬‬
‫‪90 , 2e+10 , 55.8e-10‬‬ ‫مضاعف‬ ‫‪8‬‬ ‫‪Double‬‬
‫‪88 , -9006‬‬ ‫عرشي‬ ‫‪8‬‬ ‫‪Decimal‬‬
‫_____ سلسةل حرفية (نيص) "‪"Hello in C#‬‬ ‫‪String‬‬
‫'‪'A' , 'n' , '4‬‬ ‫حريف (رمزي)‬ ‫‪1‬‬ ‫‪Char‬‬
‫‪True or False‬‬ ‫منطقي‬ ‫‪1‬‬ ‫‪bool or‬‬
‫‪Boolean‬‬
‫‪ ‬العمليات احلسابية ‪Arithmetic Operators:‬‬
‫النتيجة‬ ‫مثال‬ ‫وصف العملية‬ ‫العملية‬
‫‪-2‬‬ ‫‪-2‬‬ ‫سالب‬ ‫‪-‬‬
‫‪6‬‬ ‫‪2*3‬‬ ‫رضب‬ ‫*‬
‫‪1.5‬‬ ‫‪3/2‬‬ ‫قسمة‬ ‫‪/‬‬
‫‪2‬‬ ‫‪17 % 5‬‬ ‫ابيق القسمة‬ ‫‪%‬‬
‫‪5‬‬ ‫‪2+3‬‬ ‫مجع (اإضافة)‬ ‫‪+‬‬
‫‪1‬‬ ‫‪3–2‬‬ ‫طرح‬ ‫‪-‬‬
‫‪ ‬معليات املقارنة ‪Comparison Operators:‬‬
‫النتيجة‬ ‫مثال‬ ‫الوصف‬ ‫العملية‬
‫‪False‬‬ ‫‪7 == 2‬‬ ‫يساوي‬ ‫==‬
‫‪True‬‬ ‫‪6>3‬‬ ‫أأكرب من‬ ‫>‬
‫‪True‬‬ ‫‪5 < 11‬‬ ‫أأصغر من‬ ‫<‬
‫‪True‬‬ ‫‪23 >= 23‬‬ ‫أأكرب من أأو يساوي‬ ‫=>‬
‫‪True‬‬ ‫‪4 <= 21‬‬ ‫أأصغر من أأو يساوي‬ ‫=<‬
‫‪False‬‬ ‫‪3 != 3‬‬ ‫ل يساوي‬ ‫=!‬

‫‪14‬‬
‫‪ ‬العمليات املنطقية ‪Logical Operators:‬‬
‫النتيجة‬ ‫مثال‬ ‫الوصف‬ ‫العملية‬
‫‪True‬‬ ‫)‪(2<3) && (4<5‬‬ ‫‪AND‬‬ ‫&&‬
‫‪True‬‬ ‫)‪(2<3) || (6<7‬‬ ‫‪OR‬‬ ‫||‬
‫‪False‬‬ ‫)‪!(3=3‬‬ ‫‪NOT‬‬ ‫!‬
‫‪ ‬رشوط تسمية املتغريات ‪Variable Name Condition:‬‬
‫‪ -1‬أأن يبد أأ حبرف أأجبدي أأو رشطة حتتية ول يبد أأ برمق أأو رمز خاص ‪.‬‬
‫‪ -2‬ميكن أأن يتخلهل رمق أأو رمز خاص ‪.‬‬
‫‪ -3‬يفضل أأن يكون اإمس املتغري دال عىل وظيفته ‪.‬‬
‫‪ -4‬يفضل أأن ل يكون اإمس املتغري كبري ًا ‪.‬‬
‫‪ -5‬يتحسس حلاةل ا ألحرف فاإذا اكن ‪ Capital‬فال جيوز كتابته لحق ًا يف الربانمج ‪Small‬‬
‫‪ -6‬أأن ل يكون لكمة حمجوزة أأو أأمر من أأوامر اللغة أأو اإمس ‪ Class‬أأو ‪... Namespace‬‬
‫‪ -‬أأمثةل ملتغريات تسميهتا مقبوةل ‪:‬‬
‫… ‪number1 , A$ , _result , A3M‬‬
‫‪ -‬أأمثةل ملتغريات تسميهتا غري مقبوةل ‪:‬‬
‫… ‪#q1 , 67X , this , Textbox ,using‬‬
‫‪ ‬حمددات الوصول ‪ Accessibility :‬وتكتب قبل مجةل تعريف املتغري ويه اكلتايل ‪:‬‬
‫‪( : public -‬عام) ميكن رؤيته يف مجيع أأجزاء الربانمج حىت من ‪ Form‬أأو ‪ Class‬أآخر ‪.‬‬
‫‪( : private -‬خاص) ل ميكن رؤيته اإل يف نفس الـ‪ Form‬أأو الـ ‪. Class‬‬
‫‪( : static -‬ساكن) وميكن رؤيته خارج ا ألحداث عىل الـ ‪ Form‬وحيتفظ بأآخر قمية ‪.‬‬
‫‪( : default -‬اإفرتايض) ويف هذه ل يكتب أأي حمدد وصول أأمام املتغري ‪.‬‬
‫‪( : local -‬حميل) حبيث يمت تعريف املتغري داخل احلدث ل ميكن اإس تخدامه يف حدث أآخر أأو يمت‬
‫تعريفه داخل }{‪ block‬ل ميكن اإس تخدامه خارج الـ ‪. block‬‬
‫مثال ‪public int x ; :‬‬
‫‪ ‬الثوابت ‪ Constants :‬وتكون قمية املتغري اثبتة ل ميكن تغيريها‬
‫مثال ‪const double pi=3.14 ; :‬‬

‫‪15‬‬
Condition Statements : ‫ مجل الرشط‬
: ‫ وتكتب يف سطر واحد مث ًال برانمج القمية املطلقة للعدد‬: ‫ الرشطية ا إلس تفهامية ؟‬-
int x = -9, y;
y = (x > 0) ? x : -x;
MessageBox.Show(y.ToString());
: ‫ اكلتايل‬Syntax ‫ ولها عدة صيغ‬: ‫ الرشطية‬if -
: ‫ املفردة‬if -1
if (condition) Statement ;
or
if (condition) {
statements;
……….
}
: if … else -2
if (condition)
Statement1;
else
Statement2;
: if … else if … else -3
if ( condition1)
Statement1;
else if (condition2)
Statement2;
……..
else
Statementn;
‫برانمج ميزي ا ألعداد الزوجية وا ألعداد الفردية‬: ‫ الرشطية‬if ‫ مثال عىل‬
int x = 11;
if (x % 2 == 0)
MessageBox.Show(x.ToString() + "‫;)"عدد زوجي‬
else
MessageBox.Show(x.ToString() + "‫;)"عدد فردي‬

16
: ‫ وتكون صيغهتا ابلشلك التايل‬: ‫ الرشطية‬switch case ‫ مجةل‬-
switch (VarName ) {
case Value1 : Statement1 ; break ;
case Value2 : Statement2 ; break ;
………………..
default: Statementn ; break ;
}
‫ برانمج لعرض اإمس العدد املدخل‬: switch ‫ مثال عىل مجةل‬
int x = 1;
switch (x)
{
case 1: MessageBox.Show("one"); break;
case 2: MessageBox.Show("two"); break;
case 3: MessageBox.Show("three"); break;
default: MessageBox.Show("not found"); break;
}

Looping Statements : ‫ احللقات التكرارية‬


: ‫وتكون صيغهتا ابلشالكلتايل‬: for ‫ حلقة‬-
for (initExpression ; condition ; incrementExpression)
{
statements ; }
10 ‫ اإىل‬1 ‫برانمج لعرض ا ألعداد من‬: for ‫ مثال عىل احللقة‬
for (int x = 1; x <= 10; x++)
{
MessageBox.Show(x.ToString());
}

12 ‫ اإىل‬1 ‫ برانمج لعرض جدول الرضب ل ألعداد من‬: ‫ املتداخةل‬for ‫ مثال عىل حلقة‬
for(int i = 1; i <= 12 ;i++)
for (int j = 1; j <= 12; j++)
{
MessageBox.Show((i * j).ToString());
}
: ‫ وتكون صيغهتا ابلشلك التايل‬: while ‫ حلقة‬-
initExpression ;
while(condition)
{
statements;
incrementExpression;}
17
‫‪ ‬مثال عىل حلقة ‪ : while‬برانمج لعرض مربعات ا ألعداد من ‪ 1‬اإىل ‪10‬‬
‫;‪int i = 0‬‬
‫)‪while (i < 10‬‬
‫{‬
‫;‪i++‬‬
‫;))(‪MessageBox.Show((i * i).ToString‬‬
‫}‬
‫‪ -‬حلقة ‪: do – while‬وتكون صيغهتا ابلشلك التايل ‪:‬‬
‫; ‪initExpression‬‬
‫{ ‪do‬‬
‫;‪statements‬‬
‫;‪incrementExpression‬‬
‫; )‪} while(condition‬‬
‫‪ ‬مثال عىل حلقة ‪ : do – while‬برانمج لعرض مكعبات ا ألعداد من ‪ 1‬اإىل ‪10‬‬
‫;‪int x = 0‬‬
‫‪do‬‬
‫;‪{x++‬‬
‫;))(‪MessageBox.Show((x * x * x).ToString‬‬
‫;)‪} while (x < 10‬‬
‫‪ -‬حلقة ‪: foreach‬‬
‫س نوحضها ابملثال التايل ‪ :‬برانمج لعرض عنارص مصفوفة نصية (أأسامء ادلول)‬
‫; }"األردن"‪",‬مصر"‪",‬اليمن"{= ‪string [] x‬‬
‫)‪foreach(string sin x‬‬
‫;)‪MessageBox.Show(s‬‬
‫‪ //‬مالحظة ‪ :‬لتنفيذ مجيع الأكواد السابقة والالحقة يف ‪ VC#.Net‬جيب كتابهتا داخل حدث‬
‫معني مث ًال حدث ‪Click‬للـ ‪ button‬وذكل بعد اإضافة الزر اإىل الـ ‪. Form‬‬
‫‪ ‬املصفوفات ‪Arrays :‬‬
‫يه عبارة عن كتةل من اذلاكرة كبرية مبا يكفي لتحمل عدة متحولت من نفس النوع ولك عنرص دليه‬
‫دليل أأو فهرس وتوجد مصفوفات أأحادية البعد ومصفوفات متعددة ا ألبعاد ‪.‬‬
‫‪ -‬مصفوفة أأحادية البعد ‪ :‬ويمت تعريفها و اإس ناد القمي اإلهيا اكلتايل ‪:‬‬
‫;]‪int[] a = newint[10‬‬
‫)‪for (int i = 0; i < 10; i++‬‬
‫;‪a[i] = i + 1‬‬
‫وميكن اإختصار الكود السابق يف سطر واحد اكلتايل ‪:‬‬
‫;} ‪int[] a = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10‬‬
‫ولعرض عنارص املصفوفة نكتب الكود اكلتايل ‪:‬‬
‫)‪for (int i = 0; i < 10; i++‬‬
‫;))(‪MessageBox.Show(a[i].ToString‬‬

‫‪18‬‬
‫‪ -‬مصفوفة متعددة ا ألبعاد ‪ :‬مث ًال ثنائية البعد يمت تعريفها اكلتايل ‪:‬‬
‫;]‪int [ , ] a=newint [3,3‬‬
‫ولإس ناد القمي اإلهيا نكتب الكود اكلتايل ‪:‬‬
‫)‪for (int i = 0; i < 3; i++‬‬
‫)‪for (int j = 0; j < 3; j++‬‬
‫;‪a[i, j] = i + j‬‬
‫وميكن تعريف املصفوفة ثنائية البعد وإاس ناد القمي اإلهيا يف سطر واحد اكلتايل ‪:‬‬
‫;}}‪int [ , ] a={{1,2,3},{4,5,6},{7,8,9‬‬

‫ولعرض عنارص املصفوفة ثنائية البعد نكتب الكود اكلتايل ‪:‬‬


‫)‪for (int i = 0; i < 3; i++‬‬
‫)‪for (int j = 0; j < 3; j++‬‬
‫;))(‪MessageBox.Show(a[i,j].ToString‬‬

‫‪ ‬جتمعات البياانت يف ‪ : .NET‬ويه جتمعات بياانت جاهزة توفرها بيئة الـ ‪ .NET‬يمت اإنشاء اكئن مهنا‬
‫لإس تخداهما عرب طرق وخصائص خاصة هبا ولإس تخداهما جيب كتابة هذه امجلةل يف قسم الترصحيات‬
‫أأعىل الربانمج ‪ using System.Collections; :‬ويه اكلتايل ‪:‬‬
‫‪: ArrayList -‬ويه مصفوفة ليس لها حدود ويمت اإنشاء اكئن مهنا كام ييل ‪:‬‬
‫;)(‪ArrayList list = newArrayList‬‬
‫‪ : Stack -‬يعمل معل املكدس خبوارزمية ‪ LIFO‬ويمت اإنشاء اكئن منه اكلتايل ‪:‬‬
‫;)(‪Stack s = newStack‬‬
‫‪ : Queue -‬يعمل معل الطابور خبوارزمية ‪ FIFO‬ويمت اإنشاء اكئن منه اكلتايل ‪:‬‬
‫;)(‪Queue q = newQueue‬‬
‫‪ : Hashtable -‬جدول التجزئة وهو بنية بياانت تس تخدم اكئن ًا مكفتاح فريد ويمت اإنشاء اكئن منه‬
‫;)(‪Hashtable mybills = newHashtable‬‬

‫‪ ‬بعض أأصناف التجمعات العامة ‪:‬‬


‫‪ : List -‬ويس تخدم يف احلالت اليت تس تخدم فهيا ‪ ArrayList‬ويش تق منه اكئن اكلتايل ‪:‬‬
‫;)(>‪List<int> myInts = newList<int‬‬

‫وتوجد أأصناف أأخرى مثل ‪... Queue,Stack,SortedList,Dictionary‬‬

‫‪ ‬مفاهمي يف الربجمة اكئنية التوجه ‪ OOP‬يف لغة ‪: C#‬‬


‫‪ Class -‬صنف ‪ :‬ويتكون من دوال ودوال بناء ومتغريات وميكن أأن يرث ‪ Class‬أآخر وميكن أأن‬
‫ينفذ ‪ Interface‬وتوجد ‪ Classes‬جاهزة يف لغة ‪ VC#‬حىت أأن لك أأداة تعترب ‪ Class‬و أأيض ًا‬

‫‪19‬‬
‫تش تق من ‪ Class‬أأب أأعىل مهنا مفث ًال أأداة مربع النص ‪ TextBox‬و أأداة مربع النص الغين‬
‫‪ RichTextBox‬الكهام تش تق من الصنف ‪... TextBoxBase‬‬
‫‪ Interface -‬واهجة ‪:‬ومتتكل دوال جمردة ومتغريات اثبتة حبيث يمت اإعادة تعريف ادلوال اجملردة يف‬
‫الـ‪ Class‬اذلي ينفذ الـ‪ Interface‬وكذكل كتابة أأكواد فهيا وميكن للـ‪ Interface‬أأن ترث‬
‫‪ Interface‬أأخرى وتوجد يف ‪ VC#‬عدة ‪ Interfaces‬جاهزة مثل ‪... IQueryProvider‬‬
‫‪ Object -‬اكئن ‪ :‬ويمت تعريف الـ‪ Object‬من نوع الـ‪Class‬وإاطالق داةل بناء منه ليك يمت‬
‫اإس تخدام طرق وخصائص وعنارص ذكل الـ‪ Class‬مفث ًال لإنشاء ‪ Object‬من الـصنف‬
‫‪ Form1‬نكتب الكود التايل ‪:‬‬
‫;)(‪Form1 frm = newForm1‬‬
‫‪ -‬فضاء ا ألسامء ‪ : {} NameSpace‬وحيتوي عىل عدة ‪ Classes‬وتوجد عدد من‬
‫الـ‪ namespace‬اجلاهزة يف ‪ VC#‬وجيب اإس تريادها جبمةل ‪Using‬لإس تخدام الـ‪ Classes‬اليت‬
‫حتتوهيا يف بداية الربانمج أأعىل انفذة الـ‪ Code‬مفث ًال فضاء ا ألسامء اذلي تش تق منه ا ألدوات‬
‫‪ Controls‬هو ;‪using System.Windows.Forms‬‬

‫‪ -‬املعددات‪ : Enum‬وحيتوي أأكرث من قمية يف نفس الوقت وتوجد عدة معددات جاهزة يف لغة‬
‫ال ‪FormWindowState.Minimized-FormWindowState.Maximized‬‬ ‫‪ VC#‬مث ً‬
‫‪... FormWindowState.Normal -‬‬
‫وتوجد مفاهمي أأخرى مثل ‪ struct‬بنيه –‪ property‬خاصية ‪...‬‬
‫‪ //‬مالحظة ‪:‬لك املسميات اليت مت ذكرها ميكن بناؤها من قبل املربمج وإاس تخداهما داخل لغة‬
‫‪ VC#‬وفق القواعد احملددة للك مفهوم ‪.‬‬
‫‪ ‬مفاهمي يف الربجمة املرئية بلغة ‪: VC#‬‬
‫‪ Solution -‬حل ‪ :‬وهو عبارة عن حل ملشلكة برجمية وميكن أأن حيتوي عىل ‪ Project‬واحد أأو‬
‫أأكرث وميكن أأن يكون لك ‪ Project‬بلغة أأخرى أأو من نوع أآخر مضن بيئة ‪. .Net‬‬
‫‪ Project -‬مرشوع ‪:‬ويعترب الـ‪ Project‬برجمي ًا ‪ namespace‬وحيتوي لك ‪ Project‬عىل عدة‬
‫ملفات مضن ‪ 3‬تفرعات جشرية ‪:‬‬
‫‪ -1‬جمدل ‪ References‬ويضم عدة مكتبات رئيس ية اليت تس تخدم ملفاهتا يف بناء املرشوع ‪.‬‬
‫‪ -2‬جمدل ‪( Properties‬خصائص املرشوع) وحيتوي عدة ملفات متثل اإعدادت املرشوع ‪.‬‬
‫‪ -3‬المنوذج ‪ Form‬اذلي يمت تصممي الربانمج عليه ويضم عدة ملفات حتتوي أأكواد برجمية ‪.‬‬

‫‪21‬‬
‫وميكن اإضافة أأكرث من ‪ Form‬اإىل الـ‪ Project‬واحدوكذكل اإضافة ملفات مثل قواعد‬
‫البياانت وملفات صور ‪....‬‬
‫‪ Tool‬أأداه‪ :‬ويه أأيقونة موجودة يف صندوق ا ألدوات ‪ Toolbox‬للك أأداة وظيفة معينة يمت‬ ‫‪-‬‬
‫اإضافهتا اإىل سطح الـ‪ Form‬يدو ًاي يف زمن التصممي ‪ Design‬أأو برجمي ًا يف زمن الـ‪Code‬‬
‫ومتتكل لك أأداه خصائص و أأحداث وطرق وميكن ضبط خصائص ا ألداة يدو ًاي من انفذة‬
‫اخلصائص يف زمن التصممي أأو برجمي ًا يف زمن كتابة الـ‪ Code‬أأما ا ألحداث والطرق فيمت‬
‫اإس تخداهما يف زمن كتابة الـ‪ Code‬ويمت اإس تخدام ا ألدوات من قبل املس تخدم يف زمن التنفيذ ‪.‬‬
‫‪ property‬خاصية ‪ :‬يه التأأثري اذلي حيصل عىل ا ألداة يف حال تغيري قميهتا ولإظهار‬ ‫‪-‬‬
‫خصائص ا ألداة يمت التحديد عىل ا ألداة والتوجه حنو انفذة الـخصائص‪ properties‬أأو تظهر يف‬
‫انفذة الـ‪ Code‬بعد كتابة نقطة (‪ ).‬بعد الإمس الربجمي ل ألداة ‪.‬‬
‫‪ event‬حدث ‪ :‬هو الفعل اذلي يقوم به املس تخدم عىل ا ألداة يف زمن التنفيذ حبيث يمت‬ ‫‪-‬‬
‫الإس تجابة بتنفيذ الكود الربجمي املوجود داخل احلدث واذلي يكون حمصور ًا داخل }{ ‪.‬‬
‫‪ method‬طريقة ‪ :‬يه وظيفة معينة تتبع لك أأداة حبيث حتدث فع ًال عىل تكل ا ألداة َ‬
‫بناء‬ ‫‪-‬‬
‫عىل نوع وظيفة هذه الطريقة ودامئا ما تتبع بـ () وميكن أأن حيتوي القوسني عىل ابرامرت أأو أأكرث‬
‫حسب صيغة الطريقة نفسها ولك أأداة متتكل طرق جاهزة وميكن اإنشاء طريقة داخل انفذة‬
‫الـ‪ Code‬وإاس تخداهما داخل ا ألحداث ويف هذه احلاةل تكون اتبعة للـ‪. Form‬‬
‫‪ //‬لك أأسامء ا ألدوات واخلصائص وا ألحداث والطرق ‪ ...‬تعترب لكامت حمجوزة ‪.‬‬

‫‪21‬‬
‫الفصل الثالث‬
IDE ‫بيئة التطوير املتاكمةل‬
Integrated Development Environment

22
‫‪ ‬بيئة التطوير املتاكمةل ‪ : IDE‬يه بيئة تطوير برجميات تساعد يف تصممي وكتابة وترمجة وتنقيح وحىت‬
‫حزم براجمك وتتكون من مجموعة من ا ألرشطة و القوامئ والنوافذ‪...‬تساعد املربمج عىل اإجناز تطبيقاته‬
‫بلك سهوةل ويرس وبشلك مريئ ‪...‬‬

‫‪ ‬مكوانت بيئة التطوير املتاكمةل ‪:‬‬


‫‪ -‬رشيط العناوين ‪: Title Bar‬‬
‫ويتضمن العنارص التالية ‪-:‬‬
‫اإمس املرشوع احلايل – مجةل "‪ & " Microsoft Visual Studio‬أأيقونة حزمة ‪. VS2008‬‬
‫صندوق التحمك ‪ : Control Box‬وحيتوي عىل ا ألزرار التالية ‪:‬‬
‫‪ :‬زر حتجمي النافذة ‪:‬زر تصغري النافذة ‪.‬‬ ‫‪ :‬زر اإغالق انفذة ‪- VS‬‬
‫‪ -‬رشيط القوامئ ‪Menus Bar:‬ويتضمن عدة قوامئ حبيث حتتوي لك قامئة مجموعة من ا ألوامر ولك‬
‫أأمر يؤدي وظيفة معينة ‪ ..‬كام يف الصورة ‪:‬‬

‫‪( File -1‬ملف) ‪ :‬وحتتوي عىل ا ألوامر التالية كام يف الصورة ‪:‬‬
‫‪New‬ــــ<‪ : Project‬لإنشاء مرشوع جديد ‪.‬‬ ‫‪-‬‬
‫‪Open‬ــــ<‪ : Project\Solution‬لفتح مرشوع موجود مس بق ًا ‪.‬‬ ‫‪-‬‬
‫‪Add‬ــــ<‪ : New Project‬لإضافة مرشوع جديد اإىل الـ ‪ Solution‬احلايل ‪.‬‬ ‫‪-‬‬
‫‪ : Close‬اإغالق نوافذ الـ‪ Project‬مع بقاء انفذة ‪ Solution‬وتظهر‪. Start Page‬‬ ‫‪-‬‬
‫‪ : Close Solution‬اإغالق اكفة نوافذ الـ‪ Solution‬وتظهر ‪. Start Page‬‬ ‫‪-‬‬
‫‪ : Save Form1.cs‬حلفظ التعديالت عىل الـ‪ Form‬احلايل بدون تغيري الإمس ‪.‬‬ ‫‪-‬‬
‫‪ : Save Form1.cs As..‬حلفظ الـ‪ Form‬احلايل ابإمس جديد ‪.‬‬ ‫‪-‬‬

‫‪23‬‬
‫‪ : Save All‬حلفظ التعديالت عىل مجيع نوافذ الـ‪. Project‬‬ ‫‪-‬‬
‫‪ : Export Template‬لتصدير قالب من الـ‪ Project‬احلايل بعد حفظ مجيع عنارص املرشوع‪.‬‬ ‫‪-‬‬
‫‪ : Page Setup‬يفعل عىل شاشة الـ‪ Code‬لإعداد الصفحة للطباعة ‪.‬‬ ‫‪-‬‬
‫‪ : Print‬لطباعة الـ‪ Code‬احلايل ‪ ..‬حدد الطابعة وعدد النسخ مث اإنقر ‪. OK‬‬ ‫‪-‬‬
‫‪ : Recent Files‬لعرض قامئة بأآخر ملفات مت فتحها داخل بيئة التطوير املتاكمةل ‪. IDE‬‬ ‫‪-‬‬
‫‪ : Recent Projects‬لعرض أآخر املشاريع اليت مت فتحها داخل الـ‪. IDE‬‬ ‫‪-‬‬
‫‪ : Exit‬للخروج من ‪ Visual Studio‬بشلك اكمل ‪.‬‬ ‫‪-‬‬
‫‪(Edit -2‬حترير) ‪ :‬وحتتوي عىل ا ألوامر التالية كام يف الصورة ‪:‬‬
‫( هذه ا ألوامرتفعل غالبا عىل شاشة الـ‪) Code‬‬
‫‪ : Undo‬تراجع ل ألمام ‪ : Redo– .‬تراجع للخلف ‪.‬‬ ‫‪-‬‬
‫‪ : Cut‬قص ‪ : Copy– .‬نسخ ‪ : Past– .‬لصق ‪.‬‬ ‫‪-‬‬
‫‪ : Delete‬حذف ‪ : Select All– .‬ثظليل اللك ‪.‬‬ ‫‪-‬‬
‫‪ : Find and Replace‬حبث وإاستبدال وحيتوي عدة خيارات مهنا ‪:‬‬ ‫‪-‬‬
‫‪ : Quick Find‬للبحث عن لكمة داخل الـ‪. Code‬‬
‫‪ : Quick Replace‬لإستبدال لكمة بد ًل عن أأخرى داخل الـ‪. Code‬‬
‫‪( View -3‬عرض) ‪ :‬للتحمك يف ظهور نوافذ بيئة التطوير املتاكمةل ‪ IDE‬كام يف الصورة ‪:‬‬
‫‪ : Code‬انفذة كتابة الأكواد الربجمية ‪.‬‬ ‫‪-‬‬
‫‪ : Designer‬انفذة التصممي ‪.‬‬ ‫‪-‬‬
‫‪ : Server Explorer‬انفذة مس تكشف السريفرات وتس تخدم يف قواعد البياانت‬ ‫‪-‬‬
‫‪ : Solution Explorer‬انفذة مس تكشف احلل وحيتوي عىل ‪ Project‬أأو أأكرث‬ ‫‪-‬‬
‫‪ : Class View‬انفذة ا ألصناف وفضاءات ا ألسامء اخلاصة ابلربانمج احلايل ‪.‬‬ ‫‪-‬‬
‫‪ : Object Browser‬انفذة مس تعرض الاكئنات املوجودة يف لغة ‪. VC#.NET‬‬ ‫‪-‬‬
‫‪ : Error List‬انفذة قامئة ا ألخطاء املوجودة يف أأكواد الربانمج احلايل ‪.‬‬ ‫‪-‬‬
‫‪ : Properties Window‬انفذة اخلصائص اليت ختص مجيع ا ألدوات والـ‪. Form‬‬ ‫‪-‬‬
‫‪ : Toolbox‬انفذة صندوق ا ألدوات ‪ ..‬يمت اإضافة ا ألدوات يدو ًاي منه ‪.‬‬ ‫‪-‬‬
‫‪ : Other Windows‬تعين قامئة بنوافذ أأخرى مثل ‪:‬‬ ‫‪-‬‬
‫‪ : Start Page‬حصة البداية ‪...‬‬
‫‪ : Toolbar‬وتضم قامئة بأأرشطة ا ألدوات مثل ‪ : Build‬رشيط أأزرار بناء وترمجة الـ‪Solution‬‬ ‫‪-‬‬

‫‪24‬‬
‫‪ : Full Screen‬لعرض بيئة التطوير املتاكمةل ملء الشاشة ‪.‬‬ ‫‪-‬‬
‫‪( Project -4‬مرشوع) ‪ :‬حتتوي عىل أأوامر لإضافة عن عنارص جديدة اإىل الـ‪ Project‬ويه ‪:‬‬
‫‪ : Add Windows Form‬لإضافة منوذج جديد اإىل املرشوع ‪.‬‬ ‫‪-‬‬
‫‪ : Add User Control‬لإضافة انفذة حتمك مس تخدم اإىل املرشوع ‪.‬‬ ‫‪-‬‬
‫‪ : Add Component‬لإضافة مكون جديد اإىل املرشوع ‪.‬‬ ‫‪-‬‬
‫‪ : Add Class‬لإضافة صنف جديد اإىل املرشوع ‪.‬‬ ‫‪-‬‬
‫‪ : Add New Item‬لإضافة عنرص جديد للمرشوع ‪ ..‬تظهر انفذة حدد العنرص‬ ‫‪-‬‬
‫املراد اإضافته مث أأكتب اإمسه الربجمي مث اإنقر عىل الزر ‪. Add‬‬
‫‪ : Add Existing Item‬لإضافة عنرص موجود يف مرشوع سابق ‪.‬‬ ‫‪-‬‬
‫‪ : Show All Files‬لإظهار اكفة عنارص املرشوع يف انفذة الـ‪ .. Solution Explorer‬تظهر‬ ‫‪-‬‬
‫جمدلات حتتوي ملفات أأسفل الـ‪. Project‬‬
‫‪ : Add Reference‬لإضافة مكتبات جديدة اإىل الـمرشوع ‪.‬‬ ‫‪-‬‬
‫‪ : P1 Properties‬لإظهار انفذة خصائص املرشوع ‪ ..‬توجد فهيا عدة تبويبات حيتوي لك‬ ‫‪-‬‬
‫تبويب عىل مجموعة من اخلصائص كام يف الصورة ‪:‬‬

‫‪( Build -5‬بناء – ترمجة) ‪:‬حيتوي عىل أأوامر لرتمجة الـ‪ Projects‬املوجودة داخل ‪Solution‬‬
‫كام يف الصورة ‪:‬‬
‫‪ : Build Solution -‬ترمجة مجيع الـ‪ Projects‬املوجودة داخل الـ‪ Solution‬احلايل‬
‫‪ ..‬اإنتظر قلي ًال حيت يمت بناء احلل ويف حال جناح العملية تظهر رساةل يف رشيط احلاةل‬
‫‪ Build Successful‬ويف حال وجود أأخطاء برجمية تفشل العملية و تظهر رساةل‬
‫‪ Build Failed‬كام تظهر ا ألخطاء يف انفذة ‪. Error List‬‬
‫‪ : Rebuild Solution -‬اإعادة بناء وترمجة الـ‪ Solution‬يف حال مت ترمجته مس بق ًا‬
‫وحدثت تعديالت جديدة عىل ملفات الـ‪ Projects‬املوجودة داخهل ‪.‬‬

‫‪25‬‬
‫‪ : Clean Solution‬مسح وإازاةل معلية بناء وترمجة الـ‪ Solution‬السابقة ‪.‬‬ ‫‪-‬‬
‫‪ : Publish p1‬لنرش الـ‪ Project‬احلايل عىل هجاز المكبيوتر أأو عىل ‪ Server‬أأو عىل موقع‬ ‫‪-‬‬
‫أأنرتنت حبيث تظهر أأيقونة بصيغة تنفيذية يعمل خاللها الربانمج يف زمن التنفيذ قط ‪.‬‬
‫‪ : Configuration Manager‬لإدارة تشكيل املشاريع ويس تخدم هذا اخليار غالب ًا أأثناء حزم‬ ‫‪-‬‬
‫الربانمج مكلف تنفيذي ‪ ... Setup‬سيمت رشهحا لحق ًا ‪.‬‬
‫‪( Debug -6‬تنفيذ) ‪ :‬حيتوي عىل أأوامر ختص الانتقال ابلربانمج اإىل طور التنفيذ كام يف‬
‫الصورة ‪:‬‬
‫‪ : Windows‬حيتوي عىل قامئة ابلنوافذ اليت ختص زمن التنفيذ ويه ‪:‬‬ ‫‪-‬‬
‫‪ : Breakpoints‬انفذة لإنشاء أأو حذف نقاط الإنقطاع يف انفذة الـ‪Code‬‬
‫‪ : Output‬انفذة اخملرجات ويظهر فهيا معلومات عن ‪... thread‬‬
‫‪ : Immediate‬انفذة اخلرج الفورية ‪.‬‬
‫‪ : Start Debugging‬لبدء تنفيذ الربانمج ‪ : Stop Debugging - .‬اإيقاف التنفيذ ‪.‬‬ ‫‪-‬‬
‫‪ : Start Without Debugging‬لتنفيذ الربانمج من خارج الـ‪. Debug‬‬ ‫‪-‬‬
‫‪ : Exceptions‬انفذة ا إلس تثناءات اليت قد تظهر يف الربانمج ‪.‬‬ ‫‪-‬‬
‫‪ : Data -7‬حتتوي عىل أأوامر تتعامل مع مصادر البياانت ‪ ..‬خاصة قواعد البياانت كام يف‬
‫الصورة ‪:‬‬

‫‪ : Show Data Sources -‬لإظهار انفذة مصادر البياانت املوجودة مضن الربانمج ‪.‬‬
‫‪ : Add New Data Sources -‬لإضافة مصدر بياانت جديد ‪.‬‬
‫‪ : Tools -8‬حتتوي عىل أأدوات ذات خصائص متنوعة اليت ل توافق بشلك خامصع القوامئ‬
‫ا ألخرى وحتتوي أأيض ًا عىل قليل من ا ألوامر املزدوجة يف القوامئ ا ألخرى وا ألوامر اليت تعدل‬
‫يف بيئة التطوير املتاكمةل ‪ IDE‬نفسها ‪.‬‬

‫‪26‬‬
‫‪ : Window -9‬حتتوي عىل ا ألوامر اليت تتحمك بنافذة حزمة ‪ ,Visual Studio‬هذه ا ألوامر‬
‫تفعل اإعامتد ًا عىل نوع النافذة اليت متتكل الرتكزي ‪.‬‬

‫‪( Help-11‬مساعدة) ‪ :‬هذه القامئة تعرض عادة مجموعة منوعة من أأوامراملساعدة ‪ ,‬جيب أأن‬
‫تكون مأألوف ًا مع معظم هذه ا ألوامر من خرباتك السابقة ‪.‬‬
‫أأمه أأوامر هذه القامئة اكلتايل ‪-:‬‬
‫‪ : Index -‬فهرس بلك حمتوايت حزمة ‪ Visual Studio‬سو ًاء اكنت ‪Class‬‬
‫أأو ‪ Property‬أأو ‪ Event‬أأو ‪ Method‬أأو ‪... Namespace‬‬
‫كام توفر ‪ Syntax‬تراكيب للك مما س بق وكذكل ‪ Examples‬أأمثةل ابللغات‬
‫ا ألربع املوجودة يف حزمة ‪ Visual Studio‬ويكون العمل أأفضل يف الـ‪Help‬‬
‫اإذا مت تنصيب مكتبة ‪ .. MSDN‬لحظ اإماكنيات انفذة الـ‪ Index‬يف الصورة ‪:‬‬

‫‪ //‬مالحظة ‪ :‬أأغلب ا ألوامر املوجودة يف القوامئ دلهيا اإختصارات من لوحة املفاتيح مكتوبة أأمام لك أأمر ‪...‬‬
‫‪ -‬رشيط ا ألدوات ‪ : Tools Bar‬حيتوي عىل أأيقوانت اإختصار ل ألوامر من قوامئ خمتلفة يمت‬
‫الوصول اإلهيا بسهوةل وبرسعة أأكرث من ا ألوامر املوجودة فيالقوامئ ‪ ..‬لحظ يف الصورة أأدانه ‪:‬‬

‫س نقوم برشح أأمه هذه ا أليقوانت اكلتايل ‪:‬‬


‫‪ :‬لإضافة عنرص جديد اإىل املرشوع ‪ Form‬مث ًال ‪.‬‬ ‫‪ :‬لإنشاء مرشوع جديد ‪.‬‬
‫‪27‬‬
‫‪ : :‬لفتح مرشوع موجود مس بق ًا ‪ : .‬حفظ التغيريات للنافذة النشطة حالي ًا من املرشوع ‪.‬‬
‫‪ :‬لصق ‪.‬‬ ‫‪ :‬نسخ ‪.‬‬ ‫‪ :‬قص ‪.‬‬ ‫‪ : :‬حلفظ مجيع نوافذ وملفات املرشوع ‪.‬‬
‫‪ :‬للتنقل بني نوافذ املرشوع املفتوحة اإىل ا ألمام ‪.‬‬ ‫‪ :‬تراجع اإىل اخللف ‪.‬‬ ‫‪ : :‬تراجع اإىل ا ألمام ‪.‬‬

‫‪ :‬زر تنفيذ املرشوع ‪.‬‬ ‫‪ :‬للتنقل بني نوافذ املرشوع املفتوحة اإىل اخللف ‪.‬‬
‫‪ :‬نوع املعاجل ‪.‬‬ ‫‪ :‬قامئة منسدةل تتبع ‪. Solution Configuration‬‬
‫‪ :‬اإعادة تشغيل وضع التنفيذ‬ ‫‪ :‬كرس اللك يف زمن التنفيذ ‪ : .‬اإيقاف أأو اخلروج من وضع التنفيذ ‪.‬‬
‫‪ :‬اإظهار انفذة اخلصائص ‪. Properties‬‬ ‫‪ :‬اإظهار انفذة ‪. Solution Explorer‬‬
‫‪ :‬اإظهار صندوق ا ألدوات ‪Toolbox‬‬ ‫‪ :‬اإظهار انفذة ‪ Object Browser‬مس تعرض الاكئنات ‪.‬‬
‫‪ :‬اإظهار انفذة ‪... Command Window‬‬ ‫‪ :‬اإظهار انفذة ‪ Start Page‬صفحة البداية ‪.‬‬
‫‪ -‬رشيط احلاةل ‪ : State Bar‬وهو الرشيط املوجود أأسفل شاشة ‪Visual Studio‬وتظهر عليه‬
‫معلومات عن العمليات اليت حتدث عىل املرشوع ‪ ...‬ويسمى أأحيا ًان رشيط املعلومات ‪..‬‬

‫‪ ‬النوافذ يف ‪ : Visual Studio‬حتتوي بيئة التطوير املتاكمةل ‪ IDE‬عىل مجموعة من النوافذ حبيث‬
‫حتتوي لك انفذة عىل عنارص أأو معلومات ولك انفذة تؤدي وظيفة معينة ‪ ..‬سنتطرق لرشح أأمه‬
‫النوافذ اكلتايل ‪:‬‬
‫‪ -‬انفذة الـ ‪ : Form Designer‬ويه النافذة اليت يمت اإضافة ا ألدوات اإلهيا وتمت علهيا مرحةل‬
‫التصممي املريئ وتقع وسط يسار شاشة ‪ ... Visual Studio‬ويه تعترب ملف داخل املرشوع‬
‫‪ .. Form1.cs‬لحظ الصورة ‪:‬‬

‫‪28‬‬
‫‪ -‬انفذة صندوق ا ألدوات ‪ : Toolbox‬ويه انفذة حتتوي عىل مجيع ا ألدوات‬
‫اليت يمت اإضافهتا اإىل الـ‪ Form‬يدو ًاي اإما عن طريق النقر املزدوج عىل ا ألداة‬
‫أأو بسحب ا ألداة وإافالهتا عىل الـ‪ Form‬وميكن اإنشاء الاداة برجمي ًا ‪.‬‬
‫مت تصنيف ا ألدوات يف الـ‪ Toolbox‬اإىل مجموعات حسب تقارب شلك‬
‫ووظيفة ا ألدوات اكلتايل ‪:‬‬
‫‪ : All Windows Forms‬وتضم معظم ا ألدوات و أأكرثها اإس تخدام ًا من‬
‫خمتلف أأنواع ا ألدوات مت ترتيهبا أأجبد ًاي حسب اإمس ا ألداة ‪.‬‬
‫‪ : Common Controls‬وتضم أأكرث ا ألدوات املسامة بـ عنارص التحمك‬
‫ش يوع ًا واملش تقة من الصنف ‪ Control‬وتضاف هذه ا ألدوات عىل سطح‬
‫الـ‪ Form‬دامئ ًا أأو ما يسمى بـ ‪. Client Area‬‬
‫‪ : Containers‬وتضم ا ألدوات اليت تس تعمل كحاوايت حبيث يمت وضع‬
‫أأدوات الـ‪Control‬غالب ًا علهيا حسب متطلبات الربانمج ‪.‬‬
‫‪ : Menus & Toolbars‬وتضم ا ألدوات اليت متثل قوامئ و أأرشطة واليت‬
‫تنهتيي غالب ًا بلكمة ‪. strip‬‬
‫‪ : Data‬وتضم ا ألدوات اليت تس تعمل للتعامل مع قواعد البياانت ومصادر‬
‫البياانت ا ألخرى ‪.‬‬
‫‪ : Component‬وتضم عدة أأدوات تسمى ابملكوانت وهذا النوع من‬
‫ا ألدوات ل يضاف عىل سطح الـ‪ Form‬وإامنا أأسفل الـ‪ Form‬وتش تق من‬
‫الصنف ‪. Components‬‬
‫‪ : Printing‬وتضم أأدوات تس تخدم يف معلية الطباعة ‪...‬‬
‫‪ : Dialogs‬وتضم أأدوات تسمى ابحلوارايت مثل تكل املوجودة يف أأنظمة‬
‫التشغيل ‪. Windows‬‬
‫‪ : Reporting‬وتضم ا ألدوات املس تخدمة يف عرض التقارير بأأنواعها مثل أأدوات الـ ‪Crystal‬‬
‫‪ Report‬وغريها ‪.‬‬
‫‪ //‬توجد أأدوات أأخرى ميكن اإضافهتا اإىل الـ‪ : Toolbox‬اإنقر ابلزر ا ألمين داخل ‪Toolbox‬‬
‫تظهر قامئة اإخرت ‪ Choose Item‬تظهر انفذة فهيا ‪ 4‬تبويبات ‪ ..‬لك تبويب يضم عدد كبري من‬

‫‪29‬‬
‫ا ألدوات و أأمام لك أأداة مربع اإختيار‪ ..‬حدد عىل ا ألداة املراد اإضافهتا مث أأنقر ‪ .. Ok‬بعدها تظهر‬
‫ا ألداة املضافة عىل الـ‪ .. Toolbox‬لحظ صورة انفذة ‪ Choose Toolbox Items‬اكلتايل ‪:‬‬

‫‪ //‬بعض ا ألدوات غري موجودة مضن هذه النافذة يمت تزنيلها عرب مواقع ا ألنرتنت أأو من مصادر‬
‫أأخرى ‪ ..‬ضع الاداة يف أأي ماكن عىل هجاز المكبيوتر مث أأظهر النافذة السابقة ‪ ..‬اإنقر عىل الزر‬
‫…‪ Browse‬تظهر انفذة ‪ ..‬حدد عىل امللف اخلاص اب ألداة مث اإنقر ‪ .. Open‬سيمت اإضافة ا ألداة‬
‫اإىل التبويب احملدد ‪ ..‬حدد عىل مربع اخليار أأمام ا ألداة مث اإنقر ‪ .. Ok‬يضاف اإىل الـ‪. Toolbox‬‬
‫‪ -‬انفذة اخلصائص ‪ : Properties‬وتظهر هذه النافذة بشلك فعال بعد التحديد‬
‫عىل ا ألداة أأو الـ‪ Form‬وتضم هذه النافذة خصائص ا ألدوات و أأحداهثا ‪..‬‬
‫حبيث تظهراخلصائص اإفرتاضي ًا أأو ابلنقر عىل ا أليقونة بيامن تظهر ا ألحداث‬
‫ويمت ترتيب عرض اخلصائص وا ألحداث بطريقتني ‪:‬‬ ‫بعد النقر عىل ا أليقونة‬
‫أأجبد ًاي حسب اإمس ا ألداة أأو احلدث ابلنقر عىل ا أليقونة‬
‫أأو التصنيف مكجموعات ابلنقر عىل ا أليقونة‬
‫= ابلنس بة للخصائص يمت ضبطها يدو ًاي من هذه النافذة بعد اإدخال قمية اخلاصية‬
‫أأو اإختيارها يف اخلانة املقابةل ل ألداة ‪ ..‬ويظهر تأأثري تغيري قمية اخلاصية عىل ا ألداة‬
‫غالب ًا يف زمن التصممي وبشلك لكي يف زمن التنفيذ ‪.‬‬
‫= أأما ا ألحداث فيمت اإختيار احلدث ابلنقر املزدوج عليه حبيث يظهر يف انفذة‬
‫الـ‪ Code‬عىل شلك داةل لها ‪: 2 parameters‬‬
‫لول ‪ sender‬من نوع الصنف ‪object‬‬ ‫اأ‬
‫ال ‪EventArgs‬‬ ‫الثاين ‪ e‬من نوع الصنف املش تق منه احلدث مث ً‬

‫‪31‬‬
‫يمت كتابة الأكواد الربجمية داخل احلدث ويظهر تأأثري احلدث عىل ا ألدوات بتنفيذ ما بداخهل يف‬
‫زمن التنفيذ دامئ ًا ‪.‬‬
‫‪//‬اخلصائص يه تأأثريات برصية حتدث عىل ا ألداة بيامن ا ألحداث يه أأفعال املس تخدم اليت تمت‬
‫عىل ا ألداة ‪.‬‬
‫‪ //‬عند التحديد عىل اخلاصية أأو احلدث يف انفذة ‪ Properties‬فاإنه تظهر عهنا معلومات أأسفل‬
‫انفذة اخلصائص ‪.‬‬
‫‪ //‬ميكن ضبط اخلصائص ل ألداة برجمي ًا يف انفذة الـ‪ Code‬كام ميكن اإنشاء احلدث برجمي ًا عىل‬
‫بنفس الشلك اذلي يظهر به احلدث عند النقر عليه مع اإضافة أأكواد برجمية تقوم بتفعيل احلدث ‪.‬‬
‫‪ -‬انفذة ‪ : Solution Explorer‬ويه انفذة تضم الـ‪ Projects‬اليت يتكون مهنا الـ‪Solution‬‬
‫وامللفات اليت يتكون مهنا لك ‪ ... Project‬وابلإماكن اإضافة عنارص جديدة ‪ Items‬اإىل‬
‫الـ‪ Project‬وكذكل حذف عنارص من الـ‪ .. Project‬كام ميكن ضبط خصائص‬
‫الـ‪ Solution&Project‬من هذه النافذة ومعليات أأخرى مثل اإعادة التسمية و ‪ Build‬و ‪...‬‬

‫‪ //‬غالب ًا ما يكون اإمس الـ‪ Project‬ا ألول بنفس اإمس الـ‪ Solution‬مع اإماكنية اإعادة تسمية لكهيام‬
‫‪ //‬أأي ‪ Project‬يمت اإنشاؤه بشلك قيايس يتكون من عدة ملفات اكلتايل ‪-:‬‬
‫‪ : Properties -1‬خصائص املرشوع وتضم عدة ملفات اكلتايل ‪:‬‬
‫‪ : AssemblyInfo.cs‬ملف مكتوب بلغة ‪ C#‬يتعامل مع لغة التجميع اإمسبيل ‪.‬‬
‫‪ : Resources.resx‬ويضم ملف مكتوب بلغة ‪ C#‬عمنصادر امللفات املس تخدمة يف‬
‫الـ‪ Project‬بأأنواعها اخملتلفة ‪.‬‬
‫‪ : Settings.settings‬ملف لضبط اإعدادات الـ‪. Project‬‬
‫‪ : References -2‬ويضم مجيع املكتبات واملراجع املس تخدمة يف الـ‪. Project‬‬
‫‪ : Form1.cs -3‬ويضم عدة ملفات ختص التصممي املريئ للـ‪ Form‬اليت يتكون مهنا‬
‫الـ‪ Project‬وميكن أأن حيتوي الـ‪ Project‬أأكرث من ‪ Form‬وهذه امللفات يه ‪:‬‬

‫‪31‬‬
‫‪ : Form1.Designer.cs‬ملف مكتوب بلغة ‪ C#‬عن أأكواد التصممي املريئ وإاضافة‬
‫ا ألدوات بشلك يدوي و أأكواد ضبط اخلصائص بشلك يدوي ‪...‬‬
‫‪ : Form1.resx‬قالب مورد مبين ‪. XML‬‬
‫‪ : Program.cs -‬ملف مكتوب بلغة ‪ C#‬يمت فيه حتديد الـ‪ Form‬اليت يمت الإقالع مهنا عند‬
‫تنفيذ الربانمج ويعترب امللف الرئيس للمرشوع ‪.‬‬
‫‪ -‬انفذة الـ‪: Code‬ويه شاشة احملرر اليت يمت كتابة الأكواد الربجمية فهيا بأأي لغة من لغات ‪Visual‬‬
‫‪ Studio‬ومهنا لغة ‪ Visual C#.NET‬ويمتزي هذا احملرر خباصية الإكامل التلقايئ للكود أأي أأنه‬
‫مبجرد كتابة احلرف ا ألول من اإمس ا ألداة أأو الطريقة أأو أأي مجةل فاإنه تظهر قامئة حتتوي تكل‬
‫امجلةل وما شاهبها‪..‬لحظ الصورة التالية ‪(:‬لإظهار قامئة الإكامل التلقايئ اإضغط ‪)Ctrl + Space‬‬

‫\‬

‫‪ //‬ميكن التنقل بني قامئة الإكامل التلقايئ للكود ابإس تخدام مفاتيح ا ألسهم ( ) & ( ) وكذكل‬
‫أأيض ًا مبجرد كتابة (‪ ).‬خلف اإمس ا ألداة مث ًال تظهر قامئة خبصائص و أأحداث وطرق تكل ا ألداة ‪.‬‬
‫‪ //‬الكود املوجود يف بداية شاشة الكود املس بوق جبمةل يظهر بشلك تلقايئ مبجرد اإنشاء الـ‪Form‬‬
‫أأما دوال ا ألحداث اليت تظهر ويكتب الكود بداخلها تظهر مبجرد النقر عىل احلدث ‪...‬‬
‫‪ -‬انفذة ‪ : Error List‬ويه قامئة تضم ا ألخطاء الربجمية املوجودة يف الأكواد الربجمية ووصف اخلطأأ‬
‫ويظهر رمق السطر ‪ Line‬و رمق العمود ‪ Column‬اذلي يوجد به اخلطأأ كام تتوفر اإماكنية‬
‫اذلهاب اإىل انفذة الـ‪ Help‬حول حل ذكل اخلطأأ من مكتبة ‪ .. MSDN‬اإنقر ابلزر ا ألمين عىل‬
‫اخلطأأ تظهر قامئة اإخرت ‪ ... Show Error Help‬لحظ الصورة التالية ‪:‬‬

‫‪ -‬ا إلس تثناءات ‪ : Exceptions‬الفرق بني ‪ Exception&Error‬أأ ّن الـ‪ Error‬هو خطأأ برجمي‬
‫بيامن ‪ Exception‬خطأأ منطقي مثل القسمة عىل الصفر أأو عدد عنارص املصفوفة أأكرب من جحمها‬

‫‪32‬‬
‫‪ ...‬اإخل ‪ ..‬يف حال وجود ‪ Exception‬يف الربانمج فاإنه لن يمت اإكامل تنفيذ الربانمج‪ ..‬أأما يف حال‬
‫وجود الـ‪ Error‬فاإنه يفشل معلية الـ‪ Build‬مع اإماكنية تنفيذ الربانمج ولكنه ل يعمل بشلك‬
‫حصيح ‪.‬‬
‫‪ //‬يمت التغلب عىل مشلكة ‪ Exception‬من خالل عدة تراكيب أأشهر أأن نضع كود ا إلس تثناء‬
‫داخل مجةل ‪ try .. catch‬اكلتايل ‪:‬‬
‫{‪try‬‬
‫‪//Code‬‬
‫{)‪}catch(Exception ex‬‬
‫;))(‪MessageBox.Show(ex.ToString‬‬
‫}‬
‫‪ -‬أأزمنة ( أأطوار) الربانمج يف لغة ‪: Visual C#.NET‬‬
‫أأو ًل ‪ :‬مرحةل التصممي املريئ ‪ : Design Time‬ويمت فيه اإنشاء الـ‪ Form‬وإاضافة ا ألدوات يدو ًاي‬
‫اإلهيا ومن مث ضبط خصائص تكل ا ألدوات يدو ًاي من انفذة الـ‪. Properties‬‬
‫اثني ًا ‪ :‬مرحةل الربجمة ‪ : Programming Time‬ويمت فيه كتابة الأكواد الربجمية بعد النقر عىل‬
‫أأحداث ا ألدوات داخل انفذة الـ‪ Code‬وابلإماكن معاجلة ا ألحداث و ضبط خصائص الادوات‬
‫برجمي ًا وإاس تخدام الطرق وا ألحداث ل ألداة وتعريف املتغريات وإاس تخداهما وإانشاء طرق برجمي ًا‬
‫وكتابة خمتلف الأكواد الربجمية ‪.‬‬
‫أأو الضغط عىل‬ ‫اثلث ًا ‪:‬مرحةل التنفيذ ‪ :Run Time‬يمت تنفيذ الربانمج ابلنقر عىل الزر‬
‫املفتاح ‪F5‬واب إلماكن اإدخال قمي تطبيق ا ألحداث وما بداخلها من أأكواد ‪...‬‬
‫‪ -‬مثال حول ا ألطوار اليت مير هبا الربانمج يف لغة ‪: VC#.NET‬‬
‫‪ ‬تطبيق ‪ :2‬مصم برانمج يقوم ابإجراء العمليات احلسابية ا ألربع (‪ ) /, * , - , +‬بني عددين حصيحني؟‬
‫‪ -‬مق ابإضافة ‪ Project‬جديد واجعهل ابإمس "‪ ... "P2‬تظهر الـ‪ Form1‬تلقائي ًا‬
‫أأو ًل ‪ :‬نبد أأ مبرحةل التصممي املريئ ‪:‬‬
‫مق ابإضافة ا ألدوات التالية اإىل الـ‪ 3 : Form‬من نوع ‪ 3 –TextBox‬من نوع ‪–Label‬‬
‫‪4‬من نوع ‪ .. Button‬مث مق بضبط اخلصائص يدو ًاي كام يف اجلدول التايل ‪:‬‬
‫اخلاصية ‪Text‬‬ ‫م الإمس الربجمي ل ألداة ‪Name‬‬
‫أآةل حاس بة بس يطة‬ ‫‪Fom1‬‬ ‫‪1‬‬
‫العدد ا ألول‬ ‫‪label1‬‬ ‫‪2‬‬
‫العدد الثاين‬ ‫‪label2‬‬ ‫‪3‬‬
‫الناجت‬ ‫‪label3‬‬ ‫‪4‬‬
‫‪+‬‬ ‫‪button1‬‬ ‫‪5‬‬
‫‪33‬‬
‫‪-‬‬ ‫‪button2‬‬ ‫‪6‬‬
‫*‬ ‫‪button3‬‬ ‫‪7‬‬
‫‪/‬‬ ‫‪Button4‬‬ ‫‪8‬‬
‫مق برتتيب ا ألدوات عىل الـ‪ Form‬مثل ما هو موجود يف الصورة التالية ‪-:‬‬

‫اثني ًا ‪ :‬نبد أأ مبرحةل الربجمة ‪ :‬س نكتب الأكواد الربجمية داخل احلدث ‪ Click‬ألزرار الـ‪ Button‬حيث‬
‫وهو احلدث الإفرتايض ل ألداة ‪..‬‬
‫‪ -‬اإنقر نقر ًا مزدوج ًا عىل الزر ‪ +‬اذلي أأمسه الربجمي ‪ button1‬يظهر حدث الـ‪Click‬اكتب الكود‪:‬‬
‫)‪privatevoid button1_Click(object sender, EventArgs e‬‬
‫{‬
‫;)(‪textBox3.Text = (int.Parse(textBox1.Text) + int.Parse(textBox2.Text)).ToString‬‬
‫}‬

‫‪ -‬عد اإىل انفذة الـ‪ Form‬ابلنقر ابلزر ا ألمين تظهر قامئة ‪ ..‬اإنقر ‪.. View Designer‬‬
‫‪ -‬اإنقر نقر ًا مزدوج ًا عىل الزر ‪ -‬اذلي أأمسه الربجمي ‪ button2‬يظهر حدث الـ‪ Click‬اكتب الكود‪:‬‬
‫)‪privatevoid button2_Click(object sender, EventArgs e‬‬
‫{‬
‫;)(‪textBox3.Text = (int.Parse(textBox1.Text) - int.Parse(textBox2.Text)).ToString‬‬
‫}‬

‫‪ -‬اإنقر نقر ًا مزدوج ًا عىل الزر * اذلي أأمسه الربجمي ‪ button3‬يظهر حدث الـ‪ Click‬اكتب الكود‪:‬‬
‫)‪privatevoid button3_Click(object sender, EventArgs e‬‬
‫{‬
‫;)(‪textBox3.Text = (int.Parse(textBox1.Text) * int.Parse(textBox2.Text)).ToString‬‬
‫}‬

‫‪ -‬اإنقر نقر ًا مزدوج ًا عىل الزر ‪ /‬اذلي أأمسه الربجمي ‪ button4‬يظهر حدث الـ‪ Click‬اكتب الكود‪:‬‬
‫)‪privatevoid button4_Click(object sender, EventArgs e‬‬
‫{‬
‫;)(‪textBox3.Text = (int.Parse(textBox1.Text) / int.Parse(textBox2.Text)).ToString‬‬
‫}‬

‫تظهر النافذة ‪ ..‬مق ابإدخال العدد ا ألول يف مربع‬ ‫اثلث ًا ‪ :‬ننتقل الآن اإىل زمن التنفيذ ‪ :‬اإضغط الزر‬
‫النص‪ textBox1‬مث ًال ‪ 9‬مث أأدخل العدد الثاين يف مربع النص ‪ textBox2‬مث ًال ‪ .. 3‬مث اإنقر عىل‬
‫الزر ‪ +‬لحظ الناجت ‪ ..‬اإنقر الزر – ‪ ..‬اإنقر الزر * ‪ ..‬أأنقر الزر ‪ .. /‬لحظ الناجت يف لك مرة‬

‫‪34‬‬
‫‪.‬‬ ‫‪ ..‬مق حبفظ الربانمج ابلنقر عىل الزر‬ ‫‪ -‬مق ابخلروج من زمن التنفيذ ابلنقر عىل الزر‬

‫الفصل الرابع‬
‫التعامل مع الامنذج يف لغة ‪VC#.NET‬‬
‫‪Managing Forms In Visual C#.NET‬‬

‫‪35‬‬
‫المنوذج الـ‪ : Form‬تسمى النافذة يف زمن التصممي ‪ Form‬أأما يف زمن التنفيذ تسمى‬ ‫‪-‬‬
‫‪ , Window‬لكن الاصطالح الشائع للنافذة يف الك الزمنني حالي ًا تسمى ‪. Form‬‬

‫‪ ‬أأنواع الـ‪ : Form‬توجد ‪ 3‬أأشاكل من الـ‪ Form‬يف لغة ‪: Visual C#.NET‬‬


‫‪ Standard Form -1‬المنوذج القيايس ‪ :‬ويه الشلك الإفرتايض اذلي يظهر عند اإنشاء‬
‫مرشوع جديد وهو الأكرث اإس تخدام ًا‬

‫‪ MDI Form -2‬الامنذج متعددة الواثئق ‪ :‬وتظهر ابلشلك ‪:‬‬

‫‪ MDI child Form -3‬الامنذج ا ألبناء تظهر غالب ًا داخل الـ‪ MDI Parent‬ابلشلك ‪:‬‬

‫‪ ‬أأجزاء ومكوانت الـ‪: Form‬‬


‫‪ Title Bar -1‬رشيط عنوان الـ‪ : Form‬يقع يف أأعىل الـ‪Form‬ويتكون من التايل ‪:‬‬
‫ويتكون من ‪ 3‬أأزرار ‪:‬‬ ‫‪ Control Box -‬صندوق التحمك‬
‫‪ close button‬زر الإغالق – ‪maximizing button‬زر التكبري–‬
‫‪ minimizing button‬زر التصغري ‪.‬‬
‫‪.‬‬ ‫‪ -‬عنوان الـ‪ : Form‬هو الإمس الظاهري للـ‪ Form‬ويقع وسط رشيط العنوان‬
‫‪ -‬أأيقونة الـ‪ : Form‬يه صورة موجودة يسار رشيط العنوان عند تصغري الـ‪ Form‬فاإهنا تظهر‬
‫عىل رشيط املهام ‪.‬‬
‫‪ Client Area -2‬منطقة الزبون ‪ :‬تقع وسط الـ‪ Form‬ويه املنطقة اليت يمت اإضافة ا ألدوات‬
‫‪ Controls‬علهيا ويأأخذ املربمج حريته ابلعمل علهيا يف زمن التصممي املريئ ‪...‬‬

‫‪36‬‬
‫‪ -3‬الـ‪ Form Border‬حدود المنوذج ‪ :‬يمتثل يف الإطار اذلي حييط ابلـ‪... Form‬‬
‫‪ ‬خصائص الـ‪ : Form‬حدد عىل الـ‪ Form‬ليك متتكل الرتكزي ‪ ..‬اإنتقل اإىل انفذة اخلصائص لضبط‬
‫خصائص الـ‪ Form‬يدو ًاي وكذكل ميكن ضبط اخلصائص برجمي ًا ‪ ..‬س نتناول أأمه اخلصائص اكلتايل ‪:‬‬
‫‪ : Name -‬الإمس الربجمي للمنوذج والامس الإفرتايض ‪ Form1,Form2,….‬ويس تخدم هذا‬
‫الإمس عند كتابة الأكواد الربجمية وميكن تعديل الـ‪ Name‬حبيث يدل عىل الوظيفة اليت تؤدهيا‬
‫الـ‪ Form‬ويفضل أأن يس بق بـ‪ frm‬مث ًال ‪ ... frmfrist‬وتس تقبل وتعيد قمية من نوع ‪String‬‬
‫ولضبط الـ‪ Name‬برجمي ًا ‪this.Name = "frmfrist";:‬‬

‫‪ : Text -‬عنوان الـ‪ Form‬وهو الإمس اذلي يظهر عىل رشيط العنوان وتس تقبل وتعيد قمية من‬
‫نوع ‪ String‬ولضبط الـ‪ Text‬برجمي ًا ‪this.Text = " Visual C#.NET "; :‬‬

‫‪ : Icon -‬أأيقونة الـ‪Form‬ميكن تغيري صورة أأيقونة الـ‪ Form‬من خالل هذه اخلاصية برشط أأن‬
‫تظهر انفذة حدد‬ ‫تكون الصورة من نوع (ابإمتداد) ‪ .ico‬اإنقر عىل الزر‬
‫ملف الصورة من املاكن املوجود فيه عىل هجاز المكبيوتر مث اإنقر الزر ‪ .. Open‬لحظ تغيري‬
‫أأيقونة الـ‪ .. Form‬ولتغيري أأيقونة الـ‪ Form‬برجمي ًا ‪ :‬ضع ملف الصورة يف القرص ‪D‬ابإمس ‪a1.ico‬‬
‫اإكتب الكود اكلتايل ‪:‬‬
‫;)"‪this.Icon = Icon.ExtractAssociatedIcon("d:\\a1.ico‬‬

‫ويف حال نسخ ملف الصورة ‪ a1.ico‬يف جمدل الـ‪ Debug‬داخل جمدل الربانمج يكتب الكود ‪:‬‬
‫;)"‪this.Icon = Icon.ExtractAssociatedIcon("a1.ico‬‬

‫‪ : ShowIcon -‬عندما تكون القمية ‪ True‬تظهر أأيقونة الـ‪ Form‬وعندما تكون القمية ‪False‬‬
‫ختتفي أأيقونة الـ‪ .. Form‬تس تقبل وتعيد قمية من نوع ‪ .. Boolean‬لإخفاء أأيقونة الـ‪Form‬‬
‫;‪this.ShowIcon = false‬‬ ‫برجمي ًا ‪:‬‬
‫‪ :ShowInTaskbar‬للتحمك يف ظهور أأيقونة الـ‪ Form‬عىل رشيط املهام ‪ ,‬عندما تكون ‪True‬‬ ‫‪-‬‬
‫تظهر وعندما تكون ‪ False‬ختتفي عند تصغري الـ‪ .. Form‬تس تقبل وتعيد قمية من نوع‬
‫‪ .. Boolean‬لإخفاء أأيقونة الـ‪ Form‬من رشيط املهام برجمي ًا ‪:‬‬
‫;‪this.ShowInTaskbar = false‬‬

‫‪ : ControlBox -‬للتحمك يف ظهور صندوق التحمك عىل رشيط العنوان للـ‪ , Form‬عندما‬
‫تكون ‪ True‬يظهر وعندما تكون ‪ False‬خيتفي من رشيط العنوان ‪ ..‬تس تقبل وتعيد قمية من‬
‫نوع ‪ .. Boolean‬لإخفاء صندوق التحمك من رشيط عنوان الـ‪ Form‬برجمي ًا ‪:‬‬

‫‪37‬‬
‫;‪this.ControlBox = false‬‬

‫‪ : MaximizeBox -‬للتحمك يف ظهور زر التكبري يف صندوق التحمك ‪ ,‬يف حال ‪ True‬يظهر أأما‬
‫يف حال ‪ False‬خيتفي ‪ ..‬تس تقبل وتعيد قمية من نوع ‪ .. Boolean‬لإخفاء زر التكبري برجمي ًا ‪:‬‬
‫;‪this.MaximizeBox = false‬‬
‫‪ : MinimizeBox -‬للتحمك يف ظهور زر التصغري يف صندوق التحمك ‪ ,‬يف حال ‪ True‬يظهر‬
‫أأما يف حال ‪ False‬خيتفي ‪ ..‬تس تقبل وتعيد قمية من نوع ‪ .. Boolean‬لإخفاء زر التصغري برجمي ًا‬
‫;‪this.MinimizeBox = false‬‬ ‫‪:‬‬
‫‪ : RightToLeft -‬تس تقبل وتعيد قمية من نوع‪ RightToLeft‬وحتمتل ‪3‬قمي اكلتايل ‪:‬‬
‫‪ : No‬حماذاة عنوان الـ‪ Form‬من اليسار اإىل الميني ‪.‬‬
‫‪ : Yes‬حماذاة عنوان الـ‪ Form‬من الميني اإىل اليسار ‪.‬‬
‫‪ : Inherit‬يس تخدم يف حاةل الوراثة ‪.‬‬
‫‪ : RightToLeftLayout -‬تس تقبل وتعيد قمية من نوع ‪ , Boolean‬يف حال ‪ True‬يمت حماذاة‬
‫صندوق التحمك من الميني اإىل اليسار ويف حال ‪ False‬تبقى كام يه بدون حماذاة ‪..‬‬
‫للحصول عىل الواهجة العربية حبيث تكون ا أليقونة يف الميني وصندوق التحمك يف اليسار مق‬
‫بضبط اخلاصية ‪ RightToLeft‬ابلقمية ‪ Yes‬واخلاصية ‪ RightToLeftLayout‬ابلقمية ‪True‬‬
‫وميكن احلصول عىل الواهجة العربية برجمي ًا ‪:‬‬
‫;‪this.RightToLeft = RightToLeft.Yes‬‬
‫;‪this.RightToLeftLayout = true‬‬

‫‪ : FormBorderStyle -‬منط حدود الـ‪ .. Form‬تس تقبل وتعيد قمية من نوع‬


‫‪ FormBorderStyle‬وحتمتل ‪7‬قمي اكلتايل ‪:‬‬
‫‪ : None‬بال حدود ‪.‬‬
‫‪ : FixedSingle‬حدود اثبتة تتكون من خط واحد ‪.‬‬
‫‪ : Fixed3D‬حدود اثبتة ثالثية ا ألبعاد ‪.‬‬
‫‪ : FixedDialog‬حدود مسيكة واثبتة من منط حدود مربعات احلوار ‪.‬‬
‫‪ : Sizable‬حدود تقبل أأن يتغري جحمها ‪.‬‬
‫‪ : FixedToolWindow‬حدود انفذة أأدوات اثبتة ل تقبل تغيري جحمها ‪.‬‬
‫‪ : SizableToolWindow‬حدود انفذة أأدوات تقبل بأأن يتغري جحمها ‪.‬‬
‫جلعل حدود الـ‪ Form‬اثبتة ثالثية ا ألبعاد برجمي ًا ‪:‬‬
‫;‪this.FormBorderStyle = FormBorderStyle.Fixed3D‬‬

‫‪38‬‬
‫‪ : BackColor -‬لون خلفية الـ‪ .. Form‬تس تقبل وتعيد قمية من نوع ‪ .. Color‬توجد دلينا ‪3‬‬
‫مجموعات أألوان يف ‪ Visual Studio‬ويه ‪:‬‬
‫‪ : System‬أألوان النظام (يقصد به نظام التشغيل ‪ Windows‬تقريب ًا) ‪.‬‬
‫‪ : Web‬أألوان مواقع الويب ‪.‬‬
‫‪ : Custom‬أألوان خمصصة ‪.‬‬
‫اللون الإفرتايض للـ‪ Form‬هو ‪ Control‬مق بتغيري لون اخللفية اإىل ا ألمحر ‪ ..‬لضبط لون خلفية‬
‫;‪this.BackColor = Color.Red‬‬ ‫الـ‪ Form‬اإىل اللون ا ألمحر برجمي ًا ‪:‬‬
‫اإنقر عىل الزر املقابل‬ ‫‪ : BackgroundImage -‬تعيني صورة خلفية للـ‪Form‬‬
‫للخاصية ‪ ..‬تظهر انفذة ‪ Select Resource‬اإنقر عىل الزر ‪ .. Import‬حدد ملف الصورة مث‬
‫اإنقر ‪ .. Open‬لحظ اإدراج الصورة للنافذة ‪ ..‬اإنقر ‪. Ok‬‬
‫نوع (اإمتداد) الصورة اليت تضاف كخلفية للـ‪: Form‬‬
‫‪... JPEG,PNG,GIF,‬‬
‫تس تقبل وتعيد هذه اخلاصية قمية من نوع ‪Image‬‬
‫لتغيري صورة خلفية الـ‪ Form‬برجمي ًا ‪:‬‬
‫ضع ملف الصورة يف القرص ‪ D‬ابإمس ‪ .. a2.jpg‬اإكتب الكود التايل ‪:‬‬
‫;)"‪this.BackgroundImage = Image.FromFile("d:\\a2.jpg‬‬

‫وإاذا مت وضع الصورة يف جمدل ‪ Debug‬داخل جمدل الربانمج يكتب الكود اكلتايل ‪:‬‬
‫;)"‪this.BackgroundImage = Image.FromFile("a2.jpg‬‬

‫‪ : BackdroundImageLayout -‬منط متوضع صورة اخللفية عىل الـ‪ .. Form‬تس تقبل وتعيد‬
‫قمية من نوع ‪ ImageLayout‬وحتمتل ‪ 5‬قمي اكلتايل ‪:‬‬
‫إبتداء من أأعىل يسار الـ‪. Form‬‬‫‪ : None‬تظهر الصورة حبجمها ا ألصيل ا ً‬
‫‪ : Tile‬تظهر الصورة حبجمها ا ألصيل بأأكرث من نسخة عىل الـ‪. Form‬‬
‫‪ : Center‬تظهر الصورة حبجمها ا ألصيل وسط الـ‪. Form‬‬
‫‪ : Stretch‬يكون جحم الصورة بنفس جحم الـ‪. Form‬‬
‫‪ : Zoom‬تكبري جحم الصورة أأكرب ما ميكن تمتوضع وسط الـ‪. Form‬‬
‫جلعل صورة خلفية الـ‪ Form‬بنفس جحم الـ‪ Form‬برجمي ًا ‪:‬‬
‫;‪this.BackgroundImageLayout = ImageLayout.Stretch‬‬

‫‪39‬‬
‫‪ : Size -‬جحم الـ‪ Form‬ويتكون من خاصيتني هام ‪ Width‬العرض ‪Height ,‬ا إلرتفاع والك‬
‫اخلاصيتني تس تقبل وتعيد قمية من نوع ‪ .. int‬لضبط جحم الـ‪ Form‬برجمي ًا ‪:‬‬
‫;)‪this.Size = newSize(500, 500‬‬
‫‪ : Location -‬موقع الـ‪ Form‬عىل الشاشة وتتكون من خاصيتني هام ‪ X‬حمور السينات‬
‫(ا ألمعدة) ‪ Y ,‬حمور الصادات (الصفوف) والك اخلاصيتني تس تقبل وتعيد قمية من نوع ‪.. int‬‬
‫لضبط موقع الـ‪ Form‬عىل الشاشة برجمي ًا ‪:‬‬
‫;)‪Location = newPoint(200, 200‬‬
‫‪ : StartPosition -‬املوقع الإبتدايئ اذلي يمت اإقالع الـ‪ Form‬منه ابلنس بة للشاشة عند تنفيذ‬
‫الربانمج ‪ ..‬يس تقبل ويعيد قمية من نوع ‪ FormStartPosition‬وحيمتل ‪ 5‬قمي اكلتايل ‪:‬‬
‫‪ : Manual‬حتدد اخلاصيتان ‪ Location , Size‬موقع الـ‪ Form‬الإبتدايئ ‪.‬‬
‫‪ : CenterScreen‬يظهر الـ‪ Form‬يف وسط الشاشة وحتدد أأبعاده اخلاصية ‪. Size‬‬
‫‪ : WindowsDefaultLocation‬يعرض الـ‪ Form‬يف املوقع الإفرتايض احملدد من قبل النظام‬
‫‪ Windows‬وتؤخذ ا ألبعاد احملددة يف اخلاصية ‪Size‬هل ‪.‬‬
‫‪ : WindowsDefaultBounds‬يعرض المنوذج يف املوقع الإفرتايض احملدد من قبل النظام‬
‫‪ Windows‬وتؤخذ ا ألبعاد احملددة يف النظام ‪ Windows‬بشلك اإفرتايض ‪.‬‬
‫‪ : CentetParent‬يظهر الـ‪ Form‬يف وسط حدود الـ‪ Form‬ا ألب اذلي قام ابإس تدعائه ‪.‬‬
‫جلعل الـ‪ Form‬يقلع عند التنفيذ وسط الشاشة برجمي ًا ‪:‬‬
‫;‪this.StartPosition = FormStartPosition.CenterScreen‬‬

‫‪ : WindowState -‬جحم الـ‪ Form‬عىل الشاشة بعد تنفيذ الربانمج ‪ ..‬تس تقبل وتعيد قمية من‬
‫نوع ‪ FormWindowsState‬وحتمتل ‪ 3‬قمي اكلتايل ‪:‬‬
‫‪ : Normal‬تعرض الـ‪ Form‬اإىل احلاةل الطبيعية ‪.‬‬
‫‪ : Minimized‬تعرض الـ‪ Form‬مصغرة عىل شلك أأيقونة ‪.‬‬
‫‪ : Maximized‬تعرض الـ‪ Form‬مكربة اإىل أأقىص حد ‪.‬‬
‫جلعل الـ‪ Form‬أأكرب ما ميكن بعد التنفيذ برجمي ًا ‪:‬‬
‫;‪this.WindowState = FormWindowState.Maximized‬‬

‫‪ : Locked -‬تقوم ابإقفال الـ‪ Form‬حبيث ل ميكن اإعادة حتجميها يف زمن التصممي بواسطة املؤرش‬
‫عىل حواف الـ‪ .. Form‬تس تقبل وتعيد قمية من نوع ‪ .. Boolean‬عندما تكون القمية ‪True‬‬
‫اإقفال وعندما تكون ‪ False‬حترير ‪ ..‬تضبط هذه اخلاصية يدو ًاي فقط ‪.‬‬

‫‪41‬‬
‫‪ -‬توجد عدة خصائص أأخرى للـ‪ Form‬سيمت رشهحا مضن تطبيقات برجمية لحق ًا ‪.‬‬
‫‪ ‬أأمه أأحداث الـ‪: Form‬‬
‫‪ : Load -‬حيدث عند اإقالع الـ‪ Form‬أأو عندما تعرض الـ‪ Form‬ألول مرة ‪.‬‬
‫‪ : Activated -‬حيدث عند تنش يط (تفعيل) الـ‪ Form‬بواسطة ‪ Code‬أأو من قبل املس تخدم ‪.‬‬
‫‪ : Click -‬حيدث عند النقر عىل سطح الـ‪. Form‬‬
‫‪ : Closed -‬حيدث عندما يكون الـ‪ Form‬قد أأغلق ‪.‬‬
‫‪ : Closing -‬حيدث عند اإغالق الـ‪. Form‬‬
‫‪ : Paint -‬حيدث عند اإعادة رمس الـ‪. Form‬‬
‫‪ : Resize -‬حيدث عند اإعادة حتجمي (تغيري أأبعاد) الـ‪. Form‬‬
‫‪ -‬توجد أأحداث أأخرى للـ‪ Form‬مثل أأحداث الفأأرة و أأحداث لوحة املفاتيح ‪ ...‬سيمت تناولها‬
‫ابلتفصيل لحق ًا ‪.‬‬
‫‪ ‬أأمه طرق الـ‪: Form‬‬
‫‪ : Close -‬تقوم ابإغالق الـ‪. Form‬‬
‫‪ : Focus -‬اإعطاء الـ‪ Form‬الرتكزي ‪.‬‬
‫‪ : Hide -‬تقوم ابإخفاء الـ‪. Form‬‬
‫‪ : SetBounds -‬تضبط أأبعاد وموقع الـ‪( Form‬تقوم بعمل خاصييت ‪ Location , Size‬مع ًا) ‪.‬‬
‫‪ : Show -‬تقوم ابإظهار الـ‪. Form‬‬
‫‪ //‬توجد طرق أأخرى للـ‪ Form‬سيمت تناولها مضن التطبيقات الربجمية ‪...‬‬
‫‪ ‬تطبيق‪ : 3‬مصم برانجم ًا يقوم بتغيري لون خلفية الـ‪ Form‬لك اثنية بشلك عشوايئ ؟‬
‫‪ -‬مق ابإنشاء ‪ Project‬جديد ابإمس ‪ .. P3‬تظهر انفذة الـ‪ Form‬مق إابضافة أأداة ‪ Timer‬مث اإضبط‬
‫خصائص الـ‪ Timer‬يدو ًاي اكلتايل ‪:‬اخلاصية ‪ Enabled‬ابلقمية ‪ &True‬اخلاصية ‪ Inerval‬ابلقمية‬
‫‪ 1000‬ميل اثنية ‪ ..‬يف حدث الـ‪Tick‬للـ‪ timer1‬اإكتب الكود ابلشلك التايل ‪:‬‬
‫)‪privatevoid timer1_Tick(object sender, EventArgs e‬‬
‫{‬
‫;)(‪Random r = newRandom‬‬
‫;))‪this.BackColor = Color.FromArgb(r.Next(0, 255), r.Next(0, 255), r.Next(0, 255‬‬
‫}‬

‫مق بتنفيذ الربانمج ‪ ..‬لحظ تغيري لون الـ‪ Form‬لك اثنية من الزمن ‪..‬‬
‫‪ //‬الطريقة ‪ Next‬من الصنف ‪ Random‬تودل أأرقام عشوائية‬
‫حصيحة ‪ ..‬والطريقة ‪ FromArgb‬من الصنف ‪ Color‬ختلط ا أللوان‬

‫‪41‬‬
. ‫ وفق القمي املدخةل لتودل لون جديد‬Blue&Green&Red
‫ يمت التنقل بني الـصور ابلنقر‬.. Form‫ صور مث ًال كخلفية للـ‬5 ‫ مصم برانجم ًا يقوم بعرض‬: 4 ‫ تطبيق‬
‫عىل زر التايل يتوقف عند أآخر صورة وزر السابق يتوقف عند أأول صورة ؟‬
‫ اإجعل قمية‬.. Button ‫ مق ابإضافة زرين‬Form1‫ تظهر الـ‬.. P4 ‫ جديد ابإمس‬Project ‫ مق ابإنشاء‬-
: ‫ لحظ الشلك‬.. ">>" button2‫للـ‬Text ‫ "<<" وقمية اخلاصية‬button1‫للـ‬Text ‫اخلاصية‬

‫ مق إابعادة تسمية الصور اب ألرقام‬.. D ‫ صور يف القرص‬5 ‫ اإذهب اإىل جمدل الصور مث مق بنسخ‬-
"5" ‫وهكذا حىت الصورة اخلامسة‬... ,"2" ‫ الصورة الثانية‬, "1" ‫ الصورة ا ألوىل‬: ‫اكلتايل‬
: ‫ كام ييل‬1 ‫ و أأعطه قمية اإبتدائية‬i ‫ مق بتعريف متغري‬-
publicpartialclassForm1 : Form
{
int i = 1;

: ‫ اإكتب الكود ابلشلك‬Form1‫للـ‬Load ‫ يف احلدث‬-


privatevoid Form1_Load(object sender, EventArgs e)
{
this.BackgroundImage = Image.FromFile("d:\\" + i.ToString() + ".jpg");
this.BackgroundImageLayout = ImageLayout.Stretch;
}

: ‫ اإكتب الكود ابلشلك‬button1‫للـ‬Click‫ يف حدث‬-


privatevoid button1_Click(object sender, EventArgs e)
{
i++;
if (i >= 5)
i = 5;
this.BackgroundImage = Image.FromFile("d:\\" + i.ToString() + ".jpg");
this.BackgroundImageLayout = ImageLayout.Stretch;

: ‫ اإكتب الكود ابلشلك‬button2‫للـ‬Click ‫ يف حدث‬-


privatevoid button2_Click(object sender, EventArgs e)
{
i--;
if (i <= 1)
i = 1;
this.BackgroundImage = Image.FromFile("d:\\" + i.ToString() + ".jpg");
this.BackgroundImageLayout = ImageLayout.Stretch;

‫ إاس متتع‬.. ‫ مث تنقل بني الصور ابلنقر عىل ا ألزرار‬.. ‫ مق بتنفيذ الربانمج‬-

42
‫تطبيق ‪ : 5‬مصم برانجم ًا جيعل الـ‪ Form‬شفاف حبيث ميكننا رؤية النوافذ واجملدلات والعنارص املوجودة خلفه‬
‫سو ًاء يف سطح املكتب أأو أأي انفذة أأخرى ؟‬
‫‪ -‬مق ابإنشاء ‪ Project‬جديد ابإمس ‪ .. P5‬تظهر انفذة الـ‪ .. Form‬أأضف أأداة زر الـ‪ Button‬اإلهيا‬
‫واجعل خاصية الـ‪ Text‬هل ابلقمية "اإجعل الـمنوذج شفاف " ‪ ..‬يصبح الـ‪ Form‬ابلشلك ‪:‬‬

‫‪ -‬يف حدث الـ‪Click‬للـ‪ buton1‬اإكتب الكود ابلشلك ‪-:‬‬


‫)‪privatevoid button1_Click(object sender, EventArgs e‬‬
‫{‬
‫;‪this.BackColor = Color.Wheat‬‬
‫;‪this.TransparencyKey = Color.Wheat‬‬
‫}‬

‫‪ -‬مق بتنفيذ الربانمج ‪ ..‬اإضغط عىل الزر (اإجعل المنوذج شفاف) ‪ ..‬لحظ رؤية ا ألش ياء املوجودة‬
‫خلف المنوذج ‪..‬‬

‫‪43‬‬
‫الفصل اخلامس‬
‫التعامل مع الامنذج املتعددة‬
‫‪Working WithMultiple Forms‬‬

‫‪44‬‬
‫لقد نظمت مشاريع ‪ Windows‬يف ‪ VC#‬بتوزيعها اإىل مناذج و أأصناف ووحدات برجمية فكيف‬
‫ميكن أأن تصل الش يفرة يف أأحد ا ألجزاء اإىل اجلزء الآخر ‪ ..‬يف هذا الفصل سيمت تطبيق برجميات‬
‫ملشاريع حتتوي عىل أأكرث من ‪ Form‬يف وقت واحد وكيف يمت التنقل فامي بيهنا والتعامل مع‬
‫أأشاكل متنوعة من الامنذج املتعددة ‪...‬‬
‫‪ -‬أأو ًل ‪ :‬مشاريع حتتوي عىل أأكرث من ‪ Form‬من النوع القيايس ‪:‬‬
‫‪ ‬تطبيق ‪ : 6‬مصم برانمج اإمس املس تخدم ولكمة املرور حبيث يكون الـ‪ Form1‬يقوم بفحص اإمس‬
‫املس تخدم ولكمة املرور يف حال اكنت حصيحة يمت الإنتقال اإىل الـ‪ Form2‬اما يف حاةل اكنت خاطئة‬
‫فاإنه تظهر رساةل خترب املس تخدم بأأن إامس املس تخدم أأو لكمة املرور خاطئة ‪ ...‬يتيح الربانمج ‪ 3‬فرص‬
‫حماولت يف حال اإنهتاء عدد احملاولت يمت اخلروج من الربانمج بشلك هنايئ تلقائي ًا ؟‬
‫‪ -‬مق ابإنشاء ‪ Project‬جديد ابإمس ‪ .. P6‬تظهر الـ‪ Form1‬مق ابإضافة ا ألدوات التالية اإلهيا ‪:‬‬
‫‪ 2‬أأداة ‪ 2 , Label‬أأداة ‪ 2 , TextBox‬أأداة ‪ Button‬و أأضبط اخلصائص كام يف اجلدول ‪:‬‬
‫اخلاصية ‪Text‬‬ ‫ا ألداة‬
‫اإمس املس تخدم‬ ‫‪label1‬‬
‫لكمة املرور‬ ‫‪label2‬‬
‫موافق‬ ‫‪button1‬‬
‫اإلغاء ا ألمر‬ ‫‪button2‬‬
‫اإضبط خاصية ‪PasswordChar‬للـ‪ textBox2‬ابلقمية ' * ' لغرض تشفري لكمة املرور ‪ ..‬يصبح‬
‫شلك الـ‪ Form1‬كام يف الصورة ‪:‬‬

‫‪ -‬مق ابإضافة ‪ Form‬أآخر اإىل الـ‪ .. Project‬من القامئة ‪ Project‬ـــ‪<Add WindowsForm..‬‬


‫تظهر انفذة ‪ .. Add New Item‬من اجملموعة ‪Templates‬‬
‫اإخرت ‪ Windows Form‬ويظهر الإمس الإفرتايض ‪.. Form2.cs‬‬
‫اإنقر عىل الزر ‪. Add‬‬
‫لحظ اإضافة منوذج جديد ابإمس ‪Form2‬‬
‫‪ -‬مق ابإضافة ‪ 2‬أأداة ‪ Button1‬و أأضبط اخلاصية ‪ Text‬اكلتايل ‪:‬‬
‫‪ button1‬ــ< "عودة"&‪ button2‬ــ< "خروج"‬

‫‪45‬‬
: ‫ كام يف الصورة التالية‬Form2‫تظهر الـ‬

‫ مث اإخرت‬Form1‫ اإنقر ابلزر ا ألمين عىل سطح الـ‬... ‫ لكتابة الأكواد الربجمية‬Form1 ‫ عُد اإىل‬-
-: ‫ يف قسم الترصحيات اإكتب الكود ابلشلك التايل‬... View Code
publicpartialclassForm1 : Form
{
int i = 1;
Form2 f2 = newForm2();
.. Form2‫ اكئن (نسخة) من الـ‬f2 ‫ اذلي ميثل عدد احملاولت والـ‬i ‫مقنا بتعريف‬
-: ‫ (موافق) اإكتب الكود ابلشلك التايل‬button1‫للـ‬Click‫ يف حدث الـ‬-
privatevoid button1_Click(object sender, EventArgs e)
{
if (i <= 3)
if (textBox1.Text == "ali"&& textBox2.Text == "1234")
{
this.Hide();
f2.Show();
}
else
{
i = i + 1;
MessageBox.Show("‫;)" إمساملستخدمأوكلمة املرورغريصحيح‬
textBox1.Text = "";
textBox2.Text = "";
textBox1.Focus();
}
else
{
MessageBox.Show("‫ لذا سيتم اخلروج من الربنامج‬.. ‫;)" لقدأستنفذتعدداحملاوالت‬
this.Close();
}

-: ‫(اإلغاء ا ألمر) نكتب الكود ابلشلك التايل‬button2‫للـ‬Click‫ يف حدث الـ‬-


privatevoid button2_Click(object sender, EventArgs e)
{
this.Close();
}

‫ (عودة) نكتب‬button1‫للـ‬Click‫ يف حدث الـ‬.. ‫ لكتابة الأكواد الربجمية‬Form2‫ عُد اإىل الـ‬-
-: ‫الكود ابلشلك‬
privatevoid button1_Click(object sender, EventArgs e)
{
Form1 f1 = newForm1();
f1.Show();
this.Hide();
}

46
‫‪ -‬يف حدث الـ‪Click‬للـ‪ button2‬نكتب الكود ابلشلك التايل ‪-:‬‬
‫)‪privatevoid button2_Click(object sender, EventArgs e‬‬
‫{‬
‫;)‪System.Environment.Exit(0‬‬
‫}‬

‫‪ -‬مق بتنفيذ الربانمج ‪ ..‬أأدخل اإمس املس تخدم ولكمة املرور بشلك حصيح مث اإنقر موافق ‪ ..‬يمت‬
‫ادلخول للـ‪ .. Form2‬نفذ الربانمج مرة أأخرى و أأدخل اإمس املس تخدم أأو لكمة املرور بشلك‬
‫خاطئ بأأكرث من ‪ 3‬مرات ولحظ ماذا حيدث ‪...‬‬

‫‪ -‬اثني ًا ‪ :‬اإنشاء تطبيقات الواهجات متعددة الواثئق ‪: MDI‬‬


‫ميكن لنوافذ اإطار ‪ MDI‬أأن تعرض عدة نوافذ أأبناء داخلها وابلإماكن ترتيب النوافذ ا ألبناء‬
‫داخل الـ‪ Form‬ا ألب بأأشاكل خمتلفة ‪...‬‬
‫‪ ‬تطبيق ‪ : 7‬مق ابإنشاء انفذة متعددة الواثئق ‪ MDI‬ومق برتتيهبا بلك أأنواع الرتاتيب املتاحة عىل تكون‬
‫ا ألوامر مضن قوامئ ‪ Menu‬؟‬
‫‪ -‬مق ابإنشاء ‪ Project‬جديد ابإمس ‪ .. P7‬تظهر الـ‪.. Form1‬‬
‫اإضبط اخلاصية ‪ IsMdiContainer‬ابلقمية ‪ True‬جلعل الـ‪ Form1‬من النوع احلاوي (ا ألب)‬
‫لحظ تغري لون الـ‪ Form1‬ابلشلك ‪:‬‬

‫‪ -‬مق ابإضافة أأداة ‪ MenuStrip‬اإىل الـ‪ Form1‬من صندوق ا ألدوات يظهر رشيط قوامئ أأعىل‬
‫الـ‪ .. Form1‬لإضافة بنود رئيس ية (قوامئ) يف مربع النص " ‪ " Type Here‬اإكتب ‪File‬‬
‫لحظ ظهور مربع "‪ " Type Here‬أأسفل الـ‪ File‬وجبانبه أأيض ًا من أأجل القامئة التالية ‪...‬‬

‫‪47‬‬
‫‪ -‬أأضف بند جديد يف القامئة ‪ File‬ابإمس ‪ New‬يف مربع النص ‪ Type Here‬أأسفل الـ‪... File‬‬
‫‪ -‬مضن القامئة ‪ File‬مق ابإنشاء بند جديد ابإمس ‪ Arrange‬و أأضف اإلهيا بنود فرعية أأربعة اكلتايل ‪:‬‬
‫‪TileVertical - TileHorizental–Cascade - Icon‬‬

‫‪ -‬أأضف ‪ Form‬جديد اإىل املرشوع ابإمس ‪ Form2‬من‪ Project‬ـــ<‪Add WindowsForm‬‬


‫‪ -‬عُد اإىل الـ‪ Form1‬لكتابة الأكواد الربجمية ‪ ...‬يف حدث الـ‪Load‬للـ‪ Form1‬اإكتب الكود ابلشلك‬
‫‪:‬‬
‫)‪privatevoid Form1_Load(object sender, EventArgs e‬‬
‫{‬
‫;‪this.WindowState = FormWindowState.Maximized‬‬
‫}‬

‫‪ -‬اإنقر نقر ًا مزدوج ًا عىل البند ‪ New‬واكتب الكود ابلشلك ‪:‬‬


‫)‪privatevoid newToolStripMenuItem_Click(object sender, EventArgs e‬‬
‫{‬
‫;)(‪Form2 f = newForm2‬‬
‫;‪f.MdiParent = this‬‬
‫;)(‪f.Text = "Child" + MdiChildren.Length.ToString‬‬
‫;)(‪f.Show‬‬
‫}‬

‫‪ //‬اخلاصية ‪ MdiParent‬حتدد من هو الـ‪ Form‬احلاوي (ا ألب) ‪ ..‬أأما اخلاصية‬


‫‪Length‬للـ‪ MdiChildren‬تعيد عدد الـ‪ Form‬ا ألبناء فتظهر تسمية الامنذج ا ألبناء‬
‫‪ Child2,Child1‬وهكذا ‪ ..‬مق بتنفيذ الربانمج و أأنقر أأكرث من مرة عىل البند ‪ New‬مع لك نقرة‬
‫ينشأأ ‪Form‬اإبن ‪..‬‬

‫‪ -‬عُد اإىل زمن التصممي والربجمة ‪ ..‬اإنقر عىل البند الفرعي ‪ Icon‬املتفرع من البند ‪Arrange‬‬
‫و أأكتب الكود ابلشلك ‪:‬‬

‫‪48‬‬
‫)‪privatevoid iconToolStripMenuItem_Click(object sender, EventArgs e‬‬
‫{‬
‫;)‪LayoutMdi(MdiLayout.ArrangeIcons‬‬ ‫}‬
‫وتعين القمية ‪ : ArrangeIcons‬ترتيب لك أأيقوانت الـ‪MDI‬ا ألبناء حبيث تعرض هذه‬
‫ا أليقوانت عند تصغري انفذة الـ‪. MDI‬‬
‫‪ -‬اإنقر نقر ًا مزدوج ًا عىل البند الفرعي ‪ Cascade‬املتفرع من البند ‪ Arrange‬واكتب الكود‬
‫ابلشلك ‪:‬‬
‫)‪privatevoid cascadeToolStripMenuItem_Click(object sender, EventArgs e‬‬
‫{‬
‫;)‪LayoutMdi(MdiLayout.Cascade‬‬
‫}‬
‫وتعين القمية ‪ : Cascade‬ترتيب لك نوافذ الـ‪MDI‬ا ألبناء بشلك متتايل اإعتبار ًا من الزاوية‬
‫اليسارية العليا ملنطقة الزبون ‪.‬‬
‫‪ -‬اإنقر نقر ًا مزدوج ًا عىل البند الفرعي ‪ TileHorizental‬املتفرع من البند ‪ Arrange‬واكتب‬
‫الكود ابلشلك ‪:‬‬
‫)‪privatevoid tileHorizentalToolStripMenuItem_Click(object sender, EventArgs e‬‬
‫{‬
‫;)‪LayoutMdi(MdiLayout.TileHorizontal‬‬
‫}‬
‫وتعين القمية ‪ : TileHorizental‬ترتيب لك نوافذ الـ‪ MDI‬ا ألبناء حبيث تتجاور أأفقي ًا وتغطي‬
‫لك منطقة الزبون ول تتداخل فامي بيهنا ‪.‬‬
‫‪ -‬اإنقر نقر ًا مزدوج ًا عىل البند الفرعي ‪ TileVertical‬املتفرع من البند ‪ Arrange‬واكتب الكود‬
‫ابلشلك ‪:‬‬
‫)‪privatevoid tileVerticalToolStripMenuItem_Click(object sender, EventArgs e‬‬
‫{‬
‫;)‪LayoutMdi(MdiLayout.TileVertical‬‬
‫}‬
‫وتعين القمية ‪ : TileVertical‬ترتيب لك نوافذ الـ‪ MDI‬ا ألبناء حبيث تتجاور معود ًاي وتغطي لك‬
‫منطقة الزبون ول تتداخل فامي بيهنا ‪.‬‬
‫‪ -‬مق بتنفيذ الربانمج ‪ ..‬أأنشأأ ‪ 4‬نوافذ أأبناء ابلنقر عىل البند ‪ .. New‬مق برتتيهبا من البند ‪Arrange‬‬
‫وجرب خمتلف أأشاكل الرتاتيب املتفرعة منه ‪ ...‬إاس متتع ‪.‬‬
‫‪ -‬اثلث ًا ‪ :‬اإنشاء الـ‪ Form‬عىل شلك مربعات حوار مع تعدد الـ‪: Form‬‬
‫‪ ‬تطبيق ‪ : 8‬مصم برانمج جيعل الـ‪ Form‬عىل شلك مربع حوار حبيث يمت اإرسال النص من مربع نص‬
‫يف الـ‪ Form2‬اإىل مربع نص يف الـ‪ Form1‬مبجرد النقر عىل الزر ‪ Ok‬؟‬
‫‪ -‬مق ابإنشاء ‪ Project‬جديد ابإمس ‪ .. P8‬تظهر انفذة الـ‪... Form1‬‬
‫‪ -‬مق ابإضافة ‪ Form‬أآخر ابإمس ‪ Form2‬من القامئة ‪ Project‬ـــ‪.. <Add WindowsForm‬‬
‫‪ -‬مق ابإضافة ا ألدوات التالية اإىل ‪: Form2‬‬
‫أأداة ‪ Label‬و أأجعل خاصية الـ‪ Text‬ابلقمية " أأدخل النص اخلاص بك" ‪ ...‬مث أأضف أأسفل من‬
‫الـ‪ label1‬أأداة ‪ .. textBox‬مث أأضف ‪ 2‬أأزرار ‪ Button‬واضبط اخلاصية ‪Text‬للـ‪button1‬‬
‫ابلقمية " ‪ " Ok‬و أأضبط اخلاصية ‪Text‬للـ‪ button2‬ابلقمية "‪... " Cancel‬‬

‫‪49‬‬
‫‪ -‬ليك يظهر الـ‪ Form2‬عىل شلك مربعات احلوار اإضبط اخلصائص التالية كام يف اجلدول ‪:‬‬
‫القمية‬ ‫اخلاصية‬
‫‪FixedDialog‬‬ ‫‪FormBorderStyle‬‬
‫‪False‬‬ ‫‪ControlBox‬‬
‫‪False‬‬ ‫‪ShowInTaskbar‬‬
‫بعد ضبط اخلصائص السابقة للـ‪ Form2‬يظهر ابلشلك ‪:‬‬

‫‪ -‬اإضبط اخلاصية ‪ DialogResult‬للزرين ‪ Cancel&Ok‬كام يف اجلدول ‪-:‬‬


‫قمية اخلاصية ‪DialogResult‬‬ ‫ا ألداة‬
‫‪OK‬‬ ‫‪button1‬‬
‫‪Cancel‬‬ ‫‪button1‬‬
‫‪ -‬ليك نضمن نقل املعلومات من بني الامنذج ‪ Form2‬ــــ‪ <Form1‬جنعل اخلاصية ‪Modifiers‬‬
‫ملربع النص ‪ textBox1‬املوجود يف ‪ Form2‬ابلقمية ‪. Public‬‬
‫‪ -‬لعرض وقراءة املعطيات من مربع احلوار نعود اإىل الـ‪ Form1‬ونقوم ابلتايل ‪-:‬‬
‫مق ابإضافة أأداة زر ‪ Button‬ابإمس ‪ button1‬و أأجعل اخلاصية ‪ Text‬ابلقمية " أأظهر مربع احلوار"‬
‫أأضف أأداة مربع النص ‪ TextBox‬ابإمس ‪ textBox1‬واجعل اخلاصية ‪ ReadOnly‬ابلقمية‬
‫‪ .. True‬يظهر بعدها الـ‪ Form1‬ابلشلك ‪:‬‬

‫‪ -‬س نقوم الآن ابلربجمة يف الـ‪ Form1‬اإنقر ابلزر ا ألمين واخرت ‪ ... View Code‬يف قسم‬
‫الترصحيات ننشئ ‪ Object‬من الـ‪ Form2‬يظهر الكود ابلشلك ‪:‬‬
‫‪publicpartialclassForm1 : Form‬‬
‫{‬
‫;)(‪Form2 f = newForm2‬‬
‫‪ -‬يف احلدث ‪Click‬للـ‪ button1‬نكتب الكود ابلشلك ‪:‬‬
‫)‪privatevoid button1_Click(object sender, EventArgs e‬‬
‫{‬

‫‪51‬‬
‫)‪if (f.ShowDialog() == DialogResult.OK‬‬
‫;‪textBox1.Text = f.textBox1.Text‬‬
‫}‬
‫‪ //‬الطريقة ‪ ShowDialog‬تتعامل مع الـ‪ Form‬من نوع مربعات احلوار وتعيد قمية من نوع‬
‫‪ DialogResult‬تدل عىل الزر اذلي مت النقر عليه ‪ Ok‬أأو ‪. Cancel‬‬
‫‪ -‬ننتقل اإىل الـ‪ .. Form2‬للتحمك ابلزرين ‪ Cancel&Ok‬من لوحة املفاتيح حبيث عند الضغط‬
‫عىل املفتاح ‪ Enter‬ينفذ الزر ‪ Ok‬وعند الضغط عىل املفتاح ‪ ESC‬ينفذ الزر ‪ Cancel‬وذكل‬
‫عندما ميتكل الـ‪ Form2‬الرتكزي ‪ ..‬يف احلدث ‪Load‬للـ‪ Form2‬نكتب الكود ابلشلك ‪:‬‬
‫)‪privatevoid Form2_Load(object sender, EventArgs e‬‬
‫{‬
‫;‪this.AcceptButton = button1‬‬
‫;‪this.CancelButton = button2‬‬
‫}‬
‫‪ -‬مق بتنفيذ الربانمج ‪ ..‬اإنقر عىل الزر " أأظهر مربع احلوار" تظهر ‪ .. Form2‬اإكتب نص ًا داخل مربع‬
‫النص مث ًال " ‪" Hello in C#‬مث اإضغط الزر ‪ Ok‬أأو اإضغط املفتاح ‪.. Enter‬‬
‫لحظ اإرسال النص من الـ‪Form2‬اإىل مربع النص املوجود يف الـ‪... Form1‬‬
‫كرر العملية أأكرث من مرة ‪ ...‬جرب الزر ‪ Cancel‬أأو املفتاح ‪ ... ESC‬اس متتع‬

‫‪ -‬رابع ًا ‪ :‬اإنشاء المنوذج اململوك ‪Owned Form‬‬


‫المنوذج اململوك عبارة عن ‪ Form‬يمت التحمك هبا من ‪ Form‬أأخرى حبيث عند تصغري الـ‪Form‬‬
‫املاكل عىل رشيط املهام فاإن الـ‪ Form‬اململوك يمت تصغريه تلقائي ًا معه وعند اإعادته فاإنه يعود معه‬
‫‪ ‬تطبيق ‪ : 9‬مصم برانمج لـ‪ Form‬مملوك لـ‪ Form‬أآخر ‪ ...‬؟‬
‫‪ -‬مق ابإنشاء ‪ Project‬جديد ابإمس ‪ .. P9‬تظهر انفذة الـ‪Form1‬‬
‫‪ -‬مق ابإضافة ‪ Form‬أآخر ابإمس ‪ Form2‬من القامئة ‪ Project‬ـــ…‪<Add Windows Form‬‬
‫‪ -‬يف الـ‪ Form1‬أأضف أأداة زر ‪ Button‬ابإمس ‪ button1‬و أأجعل اخلاصية ‪ Text‬هل ابلقمية ‪:‬‬
‫" أأظهر المنوذج اململوك" ‪.‬‬
‫‪ -‬يف الـ‪ Form2‬أأضف أأداة ‪ Label‬ابإمس ‪ label1‬و أأجعل اخلاصية ‪ Text‬ابلقمية ‪:‬‬
‫"المنوذج اململوك" ‪.‬‬
‫‪ -‬س ننتقل الآن اإىل انفذة الـ‪ Code‬يف الـ‪ .. Form1‬يف قسم الترصحيات مق بكتابة الكود ابلشلك ‪:‬‬
‫‪publicpartialclassForm1 : Form‬‬
‫{‬
‫;)(‪Form2 f = newForm2‬‬
‫‪ -‬يف احلدث ‪Click‬للـ‪ button1‬نكتب الكود ابلشلك ‪:‬‬
‫)‪privatevoid button1_Click(object sender, EventArgs e‬‬

‫‪51‬‬
‫{‬
‫;)(‪f.Show‬‬
‫;)‪this.AddOwnedForm(f‬‬
‫}‬
‫‪ //‬الطريقة ‪ AddOwnedForm‬جتعل الـ‪ Form‬املوجود يف البارامرت للطريقة مملوك للـ‪Form‬‬
‫احلايل ‪.‬‬
‫‪ -‬مق بتنفيذ الربانمج ‪ ..‬اإنقر عىل الزر " أأظهر المنوذج اململوك" تظهر الـ‪ .. Form2‬مق بتصغري‬
‫الـ‪ Form1‬عىل رشيط املهام لحظ تصغري الـ‪ Form2‬معه ‪ ..‬مق ابإعادة الـ‪ Form1‬اإىل وضعه‬
‫السابق عىل الشاشة لحظ عودة الـ‪ Form2‬معه ‪...‬‬

‫‪ -‬رابع ًا ‪ :‬اإنشاء مناذج تبقى دامئ ًا يف املقدمة ‪:‬‬


‫ميكنك أأن جتعل الـ‪ Form‬يف زمن التنفيذ فوق ابيق الامنذج بضبط اخلاصية ‪ TopMost‬هل‬
‫ابلقمية ‪ .. True‬كام نس تطيع أأن نغري ترتيب تتايل مناذجك (الـ‪ )Forms‬يف زمن التنفيذ‬
‫ابإس تخدام الطريقتني ‪( BringToFront‬اإحضار اإىل ا ألمام) ‪( SentToBack ,‬اإرسال اإىل‬
‫اخللف )‬
‫‪ ‬تطبيق ‪ : 9‬مصم برانجم ًا لـ‪ Form‬يبقى دامئ ًا يف املقدمة ابلنس بة للـ‪ Forms‬وابلإماكن اإحضار‬
‫الـ‪ Form‬اإىل ا ألمام أأو اإرساهل اإىل اخللف ؟‬
‫‪ -‬مق ابإنشاء ‪ Project‬جديد ‪ ..‬تظهر انفذة الـ‪Form1‬‬
‫‪ -‬مق ابإضافة ‪ Form‬جديد ابإمس ‪ Form2‬من القامئة ‪ Project‬ـــ‪<Add Windows Form..‬‬
‫‪ -‬عُد اإىل الـ‪ Form1‬و أأضف أأداة زر ‪ Button‬ابإمس ‪ button1‬و أأضبط اخلاصية ‪ Text‬هل ابلقمية‬
‫"يف املقدمة" ‪.‬‬
‫‪ -‬عُد اإىل الـ‪ Form2‬و أأضف اإليه ‪ 2‬أأداة زر ‪ Button‬ا ألول ابإمس ‪ button1‬و أأضبط اخلاصية‬
‫‪ Text‬هل ابلقمية "اإحضار اإىل ا ألمام" والثاين ابإمس ‪ button2‬و أأضبط اخلاصية ‪ Text‬هل ابلقمية‬
‫"اإرسال اإىل اخللف" ‪.‬‬
‫‪ -‬س ننتقل اإىل انفذة الـ‪Code‬للـ‪ .. Form1‬يف قسم الترصحيات اإكتب الكود ابلشلك ‪:‬‬
‫‪publicpartialclassForm1 : Form‬‬
‫{‬
‫;)(‪Form2 f = newForm2‬‬
‫‪ -‬يف احلدث ‪Click‬للـ‪( button1‬يف املقدمة) نكتب الكود ابلشلك ‪:‬‬
‫)‪privatevoid button1_Click(object sender, EventArgs e‬‬
‫{‬
‫;‪f.TopMost = true‬‬
‫;)(‪f.Show‬‬
‫}‬

‫‪52‬‬
‫‪ -‬ننتقل اإىل انفذة الـ‪Code‬للـ‪ .. Form2‬يف احلدث ‪Click‬للـ‪ button1‬نكتب الكود ابلشلك ‪:‬‬
‫)‪privatevoid button1_Click(object sender, EventArgs e‬‬
‫{‬
‫;)(‪this.BringToFront‬‬
‫}‬
‫‪ -‬يف احلدث ‪Click‬للـ‪ button1‬نكتب الكود ابلشلك ‪:‬‬
‫)‪privatevoid button2_Click(object sender, EventArgs e‬‬
‫{‬
‫;)(‪this.SendToBack‬‬
‫}‬
‫‪ -‬مق بتنفيذ الربانمج ‪ ..‬اإنقر عىل الزر "يف املقدمة" ‪ ..‬لحظ ظهور الـ‪ form2‬يف املقدمة ‪ ..‬اإنقر‬
‫عىل الزر "اإرسال اإىل اخللف" ‪ ..‬لحظ نقل الـ‪ Form2‬خلف الـ‪ ... Form1‬إاس متتع‬

‫‪ //‬مالحظة ‪ :‬ابلنس بة خلصائص وطرق الـ‪ Form‬احلايل ميكن كتابهتا داخل الكود مبارشة بدون‬
‫كتابة لكمة ‪ ... this‬الربانمج يفهم تلقائي ًا أأ ّن هذه اخلاصية أأو الطريقة تتبع الـ‪ Form‬احلايل ‪..‬‬
‫مث ًال ‪ :‬مق ابإنشاء ‪ Project‬جديد ‪ ..‬تظهر انفذة الـ‪ .. Form1‬يف احلدث ‪Load‬للـ‪Form1‬‬
‫اإكتب الكود ابلشلك ‪:‬‬
‫)‪privatevoid Form1_Load(object sender, EventArgs e‬‬
‫{‬
‫;)(‪CenterToScreen‬‬
‫}‬
‫‪ -‬مق بتنفيذ الربانمج ‪ ..‬تظهر الـ‪ Form‬يف وسط الشاشة ‪ ..‬لحظ كتابة الطريقة‬
‫‪ CenterToScreen‬بدون كتابة لكمة ‪ this‬قبلها ‪ ..‬مبارش ًة يفهم املرتمج أأ ّن هذه الطريقة تتبع‬
‫الـ‪ Form‬احلايل ‪.‬‬

‫‪53‬‬
‫‪ -‬متارين غري حملوةل ‪:‬‬
‫‪ -1‬مصم برانجم ًا لـ‪Form‬واحد مضاف اإلهيا أأدوات مبجرد تكبري جحم الـ‪ Form‬يمت تكبري جحم‬
‫ا ألدوات املوجودة بداخهل وعند تصغري جحم الـ‪ Form‬يمت تصغري جحم ا ألدوات املوجودة‬
‫بداخهل ‪.‬‬
‫‪ -2‬مصم برانجم ًا لـ‪ Form‬واحد مضاف اإليه أأدوات ‪ Controls‬متنوعة ‪ ...‬مبجرد النقر عىل الزر‬
‫يمت عرض أأسامء ا ألدوات املضافة اكمةل (خاصية ‪ Name‬ل ألدوات) داخل أأداة ‪ListBox‬‬
‫حسب ترتيب اإضافهتا ‪.‬‬
‫‪ -3‬مصم برانجم ًا لـ‪ Form‬واحد تتحرك عىل الشاشة بشلك مس متر من اليسار اإىل الميني لك‬
‫‪111‬ميل اثنية ‪ ..‬وعند وصولها اإىل هناية ميني الشاشة تظهر مرة أأخرى من بداية يسار‬
‫الشاشة ( لنطلق عىل الربانمج الـ‪ Form‬املتحرك) ‪.‬‬
‫‪ -4‬مصم برانجم ًا لـ‪ Form1‬جيعل النص املوجود يف رشيط العنوان للـ‪ Form‬يتحرك مثل‬
‫الرشيط الإخباري ‪.‬‬
‫‪ -5‬مصم برانجم ًا حيتوي عىل ‪3‬مناذج ‪ Forms‬ومق ابلتنقل بني‪Form1‬ــ< ‪Form2‬ـــ< ‪Form3‬‬
‫ذها ًاب وإااي ًاب عن طريق النقر عىل أأزرار ‪. button‬‬

‫‪54‬‬
‫الفصل السادس‬
Form‫تطبيقات متنوعة عىل الـ‬
Multiple Application on The Forms

55
‫‪ ‬توجد تطبيقات أأخرى كثرية ومتعددة عىل الـ‪ .. Form‬يف هذا الفصل سنس تعرض أأمه هذه العمليات‬
‫وسيمت تصممي برامج توحضها مع الرشح ‪...‬‬
‫‪ -‬أأو ًل ‪ :‬اإضافة ا ألدوات عىل الـ‪ Form‬وإازالهتا منه برجمي ًا ‪:‬‬
‫تعلمنا سابق ًا كيف يمت اإضافة أأداة من الـ‪ Toolbox‬اإىل الـ‪ Form‬يدو ًاي يف زمن التصممي (ابلنقر‬
‫املزدوج عىل ا ألداة أأو بسحب ا ألداة وإافالهتا عىل الـ‪ )Form‬وكذكل كيف يمت إازاةل ا ألداة من‬
‫سطح الـ‪( Form‬ابلتحديد عىل ا ألداة مث الضغط عىل املفتاح ‪ ... )Delete‬لكن كيف يمت اإضافة‬
‫أأداة اإىل الـ‪ Form‬بعد تنفيذ الربانمج (يف زمن التنفيذ) ويعين اإضافة أأي أأداة أأو حذفها برجمي ًا‬
‫سواء اكنت ‪ Button‬أأو ‪ Label‬أأو ‪ TextBox‬أأو غريها من ا ألدوات ويمت ضبط اخلصائص‬
‫أأيض ًا برجمي ًا ويمت ذكل ابإس تخدام الطريقتني ‪ Remove , Add‬من اجملموعة ‪.. Controls‬‬
‫‪ ‬تطبيق ‪ : 11‬يف هذا املثال سيمت اإضافة أأداة مربع النص ‪ TextBox‬أأو إازالهتا برجمي ًا ؟‬
‫‪ -‬مق ابإضافة ‪ Project‬جديد ابإمس ‪ .. P10‬تظهر الـ‪ Form‬مق ابإضافة زري ‪ Button‬وإاضبط‬
‫اخلصائص هلام كام يف اجلدول ‪-:‬‬
‫اخلاصية ‪Text‬‬ ‫اخلاصية ‪Name‬‬ ‫ا ألداة‬
‫اإضافة مربع نص‬ ‫‪btnadd‬‬ ‫‪button1‬‬
‫إازاةل مربع النص‬ ‫‪btnremove‬‬ ‫‪Button2‬‬
‫‪ -‬يف قسم الترصحيات أأعىل شاشة الـ‪ Code‬نكتب الكود ابلشلك ‪:‬‬
‫‪public partial class Form1 : Form‬‬
‫{‬
‫;)(‪TextBox t = new TextBox‬‬
‫‪ //‬مقنا هنا ابإنشاء ‪ Object‬ابإ مس ‪ t‬من العائةل ‪... TextBox‬‬
‫‪ -‬يف احلدث ‪ Click‬للـ ‪ btnadd‬نكتب الكود ابلشلك ‪:‬‬
‫)‪private void btnadd_Click(object sender, EventArgs e‬‬
‫{‬
‫;)‪t.Size = new Size(200,200‬‬
‫;)‪t.Location = new Point(30, 40‬‬
‫;)‪t.Font = new Font("Arial", 20f‬‬
‫;‪t.BackColor = Color.Yellow‬‬
‫;‪t.ForeColor = Color.Red‬‬
‫;)‪this.Controls.Add(t‬‬
‫}‬
‫‪ //‬يف السطر ا ألول ضبطنا جحم مربع النص ‪ ..‬يف السطر الثاين حددان موقع مربع النص عىل‬
‫الـ‪ .. Form‬يف السطر الثالث حدان نوع وجحم النص يف مربع النص ‪ ..‬يف السطر الرابع حددان‬
‫لون خلفية مربع النص ‪ ..‬يف السطر اخلامس حددان لون اخلط يف مربع النص ‪ ..‬يف السطر‬
‫ا ألخري أأضفنا مربع النص اإىل الـ‪ Form‬احلايل ‪.‬‬
‫‪ -‬يف احلدث ‪ Click‬للـ ‪ btnremove‬نكتب الكود ابلشلك ‪:‬‬
‫)‪private void btnremove_Click(object sender, EventArgs e‬‬
‫{‬
‫;)‪this.Controls.Remove(t‬‬
‫}‬
‫‪ //‬مقنا إابزاةل مربع النص من عىل الـ‪ Form‬ابإس تخدام الطريقة ‪... Remove‬‬

‫‪56‬‬
‫‪ -‬مق بتنفيذ الربانمج ‪ ..‬اإنقر الزر "اإضافة مربع نص" ‪ ..‬لحظ اإنشاء مربع النص ‪ ..‬اإكتب فيه النص‬
‫التايل "‪ .."Hello in C#‬مق ابلنقر عىل الزر " إازاةل مربع النص"‪ ..‬لحظ إازالته ‪...‬كام يف الصورة‬

‫‪ -‬اثني ًا ‪ :‬مترير الـ‪ Form‬اإىل الإجرائيات ‪:‬‬


‫ميكنك مترير أأي ‪ Object‬من الـ‪ Form‬اإىل الإجرائيات (ادلوال) بلك سهوةل مثلها مثل أأي‬
‫أأداة أأخرى أأو أأي نوع ‪ Parameter‬أآخر ‪...‬‬
‫‪ ‬تطبيق ‪ :11‬مصم برانجم ًا يوحض كيفية مترير الـ‪ Form‬اإىل الإجرائيات ؟‬
‫‪ -‬مق ابإنشاء ‪ Project‬جديد ابإمس ‪ .. P11‬تظهر الـ‪ .. Form1‬مق إابضافة زر ‪ Button‬مث اإضبط‬
‫خاصية الـ‪ Text‬هل ابلقمية "تغيري لون خلفية المنوذج" ‪...‬‬
‫‪ -‬مق ابإنشاء طريقة أأو داةل ابإمس ‪ ColorMyForm‬ذات ابرامرت من نوع ‪ Form‬واكتب يف انفذة‬
‫الـ‪ Code‬الش يفرة التالية ابلاكمل كام يف الشلك التايل ‪-:‬‬
‫{ )‪private void ColorMyForm(Form MyForm‬‬
‫;‪MyForm.BackColor = Color.Red‬‬
‫}‬
‫‪ -‬يف احلدث ‪ Click‬للـ ‪ button1‬اإكتب الكود ابلشلك ‪:‬‬
‫)‪private void button1_Click(object sender, EventArgs e‬‬
‫{‬
‫;)‪ColorMyForm(this‬‬
‫}‬
‫‪ //‬مقنا بمترير الـ‪ Form‬احلايل كبارامرت اإىل الطريقة ‪... ColorMyForm‬‬
‫‪ -‬مق بتنفيذ الربانمج ‪ ..‬اإنقر عىل الزر "تغيري لون خلفية المنوذج" ‪ ..‬لحظ تغري لون خلفية‬
‫الـ‪ Form‬احلايل كام يف الإجرائية ‪ ... ColorMyForm‬كام يف الصورة ‪:‬‬

‫‪57‬‬
‫‪ -‬اثلث ًا ‪ :‬الرمس عىل الـ‪: Form‬‬
‫قدمي ًا اكن الرمس ابحلاسوب بواسطة أأكواد برجمية ابلصعوبة مباكن بسبب مشالكت تظهر لعدم‬
‫تناسق عتاد وبرجميات الرسوم‪ ,‬لكن رشكة ‪ Microsoft‬واهجت هذه املشلكة من خالل تقدمي‬
‫طبقة من التجريد ‪ abstraction‬بني عتاد ‪ Hardware‬العرض وبني الربامج اليت تس تخدمه ‪,‬‬
‫اكنت هذه الطبقة جزء ًا من ‪ Windows API‬يدعى واهجة ا ألهجزة الرسومية‬
‫‪. (Graphic Device Interface)GDI‬‬
‫بوجود ‪ GDI‬س يقوم الربانمج برمس الرسوميات اإىل ما يدعى بس ياق اجلهاز‬
‫(‪ )Device Context‬بد ًل من الكتابة مبارشة اإىل بطاقة العرض ‪ .‬يقوم نظام التشغيل بعدها‬
‫بأأخذ هذا الرمس من س ياق اجلهاز وحيوهل اإىل بطاقة الفيديو أأو الطابعة وبذكل يسمح ملربجمي‬
‫التطبيقات ابلرتكزي عىل منطق أأعامهلم وليس عىل برامج تشغيل العتاد ‪.‬‬
‫يشمل اإس تخدام ‪ GDI‬اإنشاء مصادر نظام تشغيل حمددة اك ألقالم ‪ Pen‬والفرشاة ‪ Brush‬مث‬
‫اإس تخداهما لرمس ا ألشاكل والنصوص ‪ ,‬حيتفظ نظام التشغيل مبقابض ‪ handle‬عىل هذه‬
‫املصادر ولسوء احلظ فاإنه ميتكل عدد ًا حمدود ًا من املقابض وابلتايل عندما تنهتيي من اإس تخدام‬
‫هذه املصادر فاإن عليك أأن تتذكر أأن حتررها وإال فاإن نظام التشغيل سيستنفذ املقابض ‪.‬‬
‫مل يكن التعامل مع ‪ GDI‬صعب ًا ولكن الطبقة الإضافية من التجريد قد تس ببت ببعض البط ‪,‬‬
‫ولهذا السبب قامت ‪ Microsoft‬يف هناية ا ألمر ابإنشاء ‪ DirectX‬من أأجل مطوري ا أللعاب ‪,‬‬
‫حيث أأن ‪ DirectX‬هو مجموعة من واهجات املس تخدم اليت تؤمن الوصول الرسيع اإىل العتاد كام‬
‫أأنه يدمع التشكيل ثاليث ا ألبعاد (‪ )3D rendering‬اذلي توفره ا أللعاب هذه ا ألايم أأما ابلنس بة‬
‫لبايق تطبيقات ‪ Windows‬فاإن ‪ GDI‬يعمل بشلك جيد ‪.‬‬
‫تتضمن بيئة ‪ .NET‬نسخة مدارة (‪ )managed‬من ‪ GDI‬تدعى ‪ GDI+‬وبوجودها ميكنك‬
‫اإجناز رسوماتك ابإس تخدام اكئن من الصنف ‪ . Graphics‬ميثل اكئن ‪ Graphics‬سطح رمس‬
‫أكن يكون منوذج ًا أأو مستند طابعة وهو يتضمن الكثري من املناجه من أأجل رمس ا ألشاكل‬
‫واخلطوط والنصوص وعرض الصور ‪.‬‬
‫يمت وضع ش يفرة الرمس عادة مضن احلدث ‪ Paint‬للـ ‪ Form‬واذلي يعين اإعادة رمس المنوذج ‪,‬‬
‫يتلقى احلدث ‪ Paint‬وس يط ًا من النوع ‪ PaintEventArgs‬اذلي يتضمن اكئن من‬
‫‪ Graphics‬من أأجل الـ‪ Form‬اذلي قام بقدح احلدث ‪ .‬ميكنك بعدها ابإس تخدام اكئن‬
‫‪ Graphics‬هذا لإجناز أأية أأعامل رمس رضورية يف التطبيق ‪.‬‬
‫‪ -‬رمس نص عىل الـ ‪: Form‬‬
‫ميتكل الاكئن ‪ Graphics‬الطريقة ‪ DrawString‬من أأجل رمس نص يمت اإس تخداهما بتقدمي‬
‫سلسةل حمرفية لعرضها ‪...‬وتس تقبل هذه الطريقة ‪ 4‬ابرامرتات اكئنات متثل النص املراد رمسه‬
‫واخلط ولون الفرشاة وموقع الرمس عىل الـ‪. Form‬‬

‫‪58‬‬
‫‪ ‬تطبيق ‪ :12‬مصم برانجم ًا يقوم برمس اإمسك عىل الـ ‪ Form‬؟‬
‫‪ -‬مق ابإنشاء ‪ Project‬جديد ابإمس ‪ .. P12‬تظهر الـ ‪... Form1‬‬
‫‪ -‬يف احلدث ‪ Paint‬للـ ‪ Form1‬اإكتب الكود ابلشلك التايل ‪:‬‬
‫)‪private void Form1_Paint(object sender, PaintEventArgs e‬‬
‫{‬
‫;‪Graphics g=e.Graphics‬‬
‫;"‪string text="Mahmud‬‬
‫;)‪Font font=new Font("Arial",20f‬‬
‫;‪Brush brush=Brushes.Blue‬‬
‫;)‪Point point = new Point(50, 100‬‬
‫;)‪g.DrawString(text, font, brush, point‬‬

‫}‬
‫‪ //‬يف السطر ا ألول أأنشئنا ‪ Object‬من الصنف ‪ .. Graphics‬يف السطر الثاين مقنا بتخزين النص‬
‫املراد رمسه داخل متغري من نوع ‪ .. String‬يف السطر الثالث حددان نوع وجحم خط النص ‪ ..‬يف‬
‫السطر الرابع حددان لون فرشاة الرمس ‪ ..‬يف السطر اخلامس حددان موقع الرمس عىل الـ‪Form‬‬
‫‪ -‬مق بتنفيذ الربانمج ‪ ..‬لحظ رمس النص ‪ Mahmud‬عىل الـ ‪ Form‬كام يف الصورة ‪:‬‬

‫‪ -‬رمس خطوط مس تقمية عىل الـ ‪: Form‬‬


‫ميكن رمس خط مس تقمي عىل الـ‪ Form‬ابإس تخدام الطريقة ‪ DrowLine‬اليت تتبع الاكئن‬
‫‪ Graphics‬وتس تقبل هذه الطريقة ‪3‬ابرامرتات اكئنات متثل قمل الرمس ‪ Pen‬و موقع بداية‬
‫الرمس وهنايته ‪.‬‬
‫‪ ‬تطبيق ‪ : 13‬مصم برانجم ًا لرمس ‪ 11‬خطوط مس تقمية عىل الـ‪ Form‬بلون قرمزي وبطول متايد؟‬
‫‪ -‬مق ابإنشاء ‪ Project‬جديد ‪ ..‬تظهر الـ ‪... Form1‬‬
‫‪ -‬يف احلدث ‪ Paint‬للـ ‪ Form1‬مق بكتابة الكود ابلشلك التايل ‪:‬‬
‫)‪private void Form1_Paint(object sender, PaintEventArgs e‬‬
‫{‬
‫;‪Graphics g = e.Graphics‬‬
‫;‪Pen pen = Pens.Crimson‬‬
‫;)‪Point start = new Point(20, 50‬‬
‫;)‪Point stop = new Point(20, 100‬‬
‫)‪for (int i = 0; i < 10; i++‬‬
‫{‬
‫;‪start.X += 20‬‬
‫;‪stop.X += 20‬‬
‫;‪stop.Y += 20‬‬
‫;)‪g.DrawLine(pen, start, stop‬‬
‫}‬
‫}‬

‫‪59‬‬
‫‪ //‬يف السطر ا ألول عرفنا ‪ Object‬من الصنف ‪ .. Graphics‬يف السطر الثاين حددان لون‬
‫القمل قرمزي ‪ ..‬يف السطر الثالث حددان نقطة بداية الرمس ألول خط ‪ ..‬يف السطر الرابع حددان‬
‫نقطة هناية الرمس ألول خط ‪ ..‬حلقة ‪ For‬لرمس ‪11‬خطوط حبيث يبعد لك خط عن الآخر‬
‫‪21‬نقطة ويزيد لك طول خط عن الآخر ‪21‬نقطة أأعىل و أأسفل ‪...‬‬
‫‪ -‬مق بتنفيذ الربانمج ‪ ...‬لحظ رمس ‪11‬خطوط مس تقمية بشلك رائع كام يف الصورة ‪:‬‬

‫‪ -‬رمس ا ألشاكل الهندس ية ( دائرة – مس تطيل ‪ )... -‬عىل الـ ‪-: Form‬‬
‫‪ -‬رمس ا ألشاكل البيضاوية ‪:‬‬
‫يقدم الصنف ‪ Graphics‬الطريقة ‪ FillEllipse‬من أأجل رمس ا ألشاكل البيضاوية وليك تمتكن‬
‫من اإس تخدام ‪ FillEllipse‬عليك تقدمي مس تطيل للمنطقة احمليطة ابلشلك البيضاوي ويقوم‬
‫اكئن ‪ Graphics‬ابإجناز الرمس الفعيل فاإذا تصادف أأن اكن املس تطيل احمليطي اذلي قدمته هو‬
‫مربع متام ًا فاإن الشلك البيضاوي س يكون دائرة ‪\.‬‬
‫‪ ‬تطبيق ‪ :14‬مصم برانجم ًا لرمس دائرة ابلفرشاة وابإس تخدام اللون خش يب عىل الـ‪ Form‬؟‬
‫‪ -‬مق ابإنشاء ‪ Project‬جديد ابإمس ‪ ..P14‬تظهر الـ‪... Form1‬‬
‫‪ -‬يف احلدث ‪ Paint‬للـ‪ Form1‬مق بكتابة الكود ابلشلك التايل ‪:‬‬
‫)‪private void Form1_Paint(object sender, PaintEventArgs e‬‬
‫{‬
‫;‪Graphics g = e.Graphics‬‬
‫;)‪SolidBrush azurbrush = new SolidBrush(Color.BurlyWood‬‬
‫;)‪Rectangle circlebound = new Rectangle(10, 10, 100, 100‬‬
‫;)‪g.FillEllipse(azurbrush, circlebound‬‬
‫}‬
‫‪ //‬يف السطر ا ألول أأنشئنا ‪ Object‬من الصنف ‪ .. Graphics‬يف السطر الثاين حددان لون فرشاة‬
‫رمس الشلك ‪ ..‬يف السطر الثالث حددان أأبعاد املس تطيل اذلي سرتمس ادلائرة مضن حدوده ‪.‬‬
‫‪ -‬مق بتنفيذ الربانمج ‪ ..‬لحظ رمس ادلائرة كام يف الصورة ‪:‬‬

‫‪61‬‬
‫‪ -‬رمس ا ألشاكل الرابعية ‪:‬‬
‫يقدم الصنف ‪ Graphics‬الطريقة ‪ FillRectangle‬لرمس ا ألشاكل الهندس ية ذات أأربعة‬
‫أأضالع مثل املربع واملس تطيل ‪ ...‬حبيث تقوم مب أل املنطقة املس تطيةل املوجودة مضن مس تطيل‬
‫حدودي معطى كبارامرت اثين للطريقة ابلإضافة اإىل اكئن ميثل لون فرشاة الرمس ‪...‬‬
‫‪ ‬تطبيق ‪ :15‬مصم برانجم ًا لرمس مس تطيل عىل الـ‪ Form‬بلون أأزرق فاحت ؟‬
‫‪ -‬مق ابإنشاء ‪ Project‬جديد ابإمس ‪ .. P15‬تظهر الـ ‪... Form1‬‬
‫‪ -‬يف احلدث ‪ Paint‬للـ ‪ Form1‬نكتب الكود ابلشلك التايل ‪:‬‬
‫)‪private void Form1_Paint(object sender, PaintEventArgs e‬‬

‫{‬
‫;‪Graphics g=e.Graphics‬‬
‫;)‪SolidBrush beigebrush = new SolidBrush(Color.CadetBlue‬‬
‫;)‪Rectangle rectbound = new Rectangle(10, 90, 50, 100‬‬
‫;)‪g.FillRectangle(beigebrush, rectbound‬‬
‫}‬
‫‪ //‬يف السطر ا ألول أأنشئنا ‪ Object‬من الصنف ‪ .. Graphics‬يف السطر الثاين حددان لون فرشاة‬
‫رمس الشلك ‪ ..‬يف السطر الثالث حددان أأبعاد املس تطيل ‪...‬‬
‫‪ -‬مق بتنفيذ الربانمج ‪ ..‬لحظ رمس مس تطيل كام يف الصورة ‪:‬‬

‫‪ ‬تفريغ املصادر‪:‬‬
‫تتضمن اكئنات الرسوميات اكلفرشاة ‪ Brush‬وا ألقالم ‪ Pen‬مصادر نظام تشغيل غري مدارة‬
‫‪ unmanaged‬لن يعرف جامع نفاايت ‪ .NET‬كيف حيررها ‪ ,‬يمت عادة حتقيق الواهجة ‪IDispose‬‬
‫من قبل ا ألصناف اليت تتضمن مصادر غري مدارة وحتتاج اإىل أأن يمت حتريرها بشلك رصحي ‪.‬‬
‫حيث الواهجة ترصح عن الطريقة ‪ Dispose‬اذلي يس تخدمه حتقيق ا ألصناف لتحرير املصادر غري‬
‫املدارة مكقابض ‪ . Brush , Pen‬يقوم السطرين التاليني من معاجل ‪ Paint‬ابلنس بة للربانجمني‬
‫ا ألخريين ابإس تدعاء الطريقة ‪ Dispose‬عىل الفرشاتني وذكل هبدف تفريغ املصادر ‪:‬‬
‫;)(‪azurebrush.Dispose‬‬
‫;)(‪beigebrush.Dispose‬‬
‫قد يبدو أأن معاجل احلدث ‪ Paint‬السابق ينجز العمل بشلك جيد ابإس تدعائه للطريقة ‪, Dispose‬‬
‫لكن مازالت هناك اإماكنية أأن يمت اإلقاء اإس تثناء مما يعين اخلروج من الطريقة ‪Form1_Paint‬‬
‫بطريقة غري متوقعة قبل اإس تدعاء ‪ . Dispose‬فاإذا حدث هذا فاإن الربانمج س يعاين من ترسب‬

‫‪61‬‬
‫املصادر ‪ .‬وللحامية من ترسب املصادر تقدم ‪ C#‬طريقة لتعريف كتةل من الش يفرة تضمن أأن يمت‬
‫اإس تدعاء الطريقة ‪. Dispose‬‬
‫تقوم الكتةل ‪ using‬ابإنشاء قسم محمي من الش يفرة يف ماكن توضع املصادر ‪ ,‬وعند اخلروج من هذه‬
‫الكتةل سيمت اإس تدعاء الطريقة ‪ Dispose‬أأوتوماتيكي ًا عىل الاكئنات اليت مت اإنشاؤها يف أأعىل الش يفرة‬
‫اكلتايل ‪:‬‬
‫);)‪using( SolidBrush beigebrush = new SolidBrush(Color.CadetBlue‬‬

‫‪ -‬متارين غري حملوةل ‪:‬‬


‫‪ -1‬مصم برانجم ًا يقوم ابلرمس عىل الـ‪ Form‬مبجرد النقر عىل الزر كام يف الواهجة التالية ‪:‬‬

‫مصم برانجم ًا يقوم ابإنشاء زر ‪ button‬برجمي ًا عند اإقالع الـ‪ Form‬وعند النقر عىل زر‬ ‫‪-2‬‬
‫الـ‪ button‬تظهر رساةل "‪ "Hello in C#‬؟‬
‫مصم برانجم ًا يوجد به ‪ 2 Forms‬حبيث يمت مترير الـ‪ Form2‬اإىل الإجرائيات داخل‬ ‫‪-3‬‬
‫الـ‪ Form1‬حبيث يقوم بتغيري لون خلفية الـ‪ Form2‬داخل هذه الإجرائية ويمت اإس تدعاء‬
‫الإجرائية عند النقر عىل زر ‪ button‬موجود عىل الـ‪ Form1‬؟‬
‫كيف ميكن رمس زر الـ‪ button‬حبيث يظهر بشلك دائري ؟‬ ‫‪-4‬‬
‫مصم برانجم ًا حلساب مساحة وجحم ا ألشاكل الهندس ية مع رمسها وفق ا ألبعاد املدخةل حسب‬ ‫‪-5‬‬
‫لك شلك هنديس حبيث يشمل خمتلف ا ألشاكل الهندس ية الشائعة الإس تخدام ‪:‬‬
‫مربع ‪ ,‬مس تطيل ‪ ,‬مثلث ‪ ,‬متوازي أأضالع ‪ ,‬دائرة ‪ ,‬قطع انقص ‪ ... ,‬اإخل ‪.‬‬

‫‪62‬‬
‫الفصل السابع‬
‫التعامل مع صندوق الرسائل‬
‫‪Working With MessageBox‬‬

‫‪63‬‬
‫‪ ‬للرسائل أأمهية كبرية يف الربجمة بأأنواعها فهيي تساعد عىل اإدارة الربامج وخترب املس تخدم مبعلومات عن‬
‫النظام وعن حاةل العمليات فيه وتعترب واهجة احلوار الأكرث ش يوع ًا واليت يس تخدهما الربانمج للتحمك‬
‫بأأفعال املس تخدم وتوجهيه وتأأيت يف مكتبات ‪ .NET‬بعدة أأشاكل و أأنواع ‪ ...‬ويمت عرضها داخل‬
‫صندوق يسمى صندوق الرسائل ‪ MessageBox‬ويه ل تعترب أأداة يف ‪ VC#‬وإامنا يعترب ‪Class‬‬
‫ميتكل ‪3‬طرق فقط أأمهها الطريقة ‪ Show‬واليت تس تخدم لعرض الـ‪ MessageBox‬كام سيمت رشهحا‬
‫لحق ًا ‪...‬كام ميكن عرض الرسائل يف أأي حدث من ا ألحداث و ألي أأداة من ا ألدوات ويف أأي وقت‬
‫من أأوقات تشغيل الربانمج يف زمن التنفيذ ويمت اإعداد الرسائل يف زمن الربجمة ‪...‬‬
‫‪ ‬ميتكل الصنف ‪ MessageBox‬الطريقة ‪ Show‬واليت تس تخدم لعرض الرسائل وتظهر الطريقة‬
‫‪ Show‬مبا يقارب ‪21‬شلك تقريب ًا وحتتوي عىل عدة ابرامرتات يفصل بني لك ابرامرت وأآخر فاصةل ‪,‬‬
‫ميكن رشح أأمه هذه البارامرتات اكلتايل ‪:‬‬

‫‪ : string text -1‬وميثل نص الرساةل ويكتب حمتوى الرساةل داخل عالميت تنصيص مزدوجة " "‬
‫ويظهر حمتوى الرساةل يف وسط صندوق الرساةل ‪. MessageBox‬‬

‫‪ : string caption -2‬وميثل عنوان الرساةل ويكتب أأيض ًا داخل عالميت تنصيص مزدوجة " "‬
‫ويظهر عنوان الرساةل يف رشيط عنوان صندوق الرساةل يف ا ألعىل ‪.‬‬

‫‪ : MessageBoxButtons buttons‬وميثل أأزرار الرساةل اليت تظهر يف صندوق الرسائل‬ ‫‪-3‬‬


‫أأسفل نص الرساةل وتوجد عدة أأنواع من ا ألزرار اكلتايل ‪:‬‬
‫‪ : AbortRetryIgnore‬وتظهر ‪ 3‬أأزرار يف الرساةل ويه ‪( Abort‬اإهجاض ا ألمر) ‪Retry ,‬‬ ‫‪-‬‬
‫(اإعادة احملاوةل) ‪( Ignore ,‬جتاهل) ‪.‬‬
‫‪ : OK‬يظهر زر واحد فقط هو ‪( OK‬موافق) ‪.‬‬ ‫‪-‬‬
‫‪ : OKCancel‬يظهر زرين هام ‪( OK‬موافق) ‪( Cancel ,‬اإلغاء ا ألمر) ‪.‬‬ ‫‪-‬‬
‫‪ : RetryCancel‬يظهر زرين هام ‪( Retry‬اإعادة احملاوةل) ‪( Cancel ,‬اإلغاء ا ألمر) ‪.‬‬ ‫‪-‬‬
‫‪ : YesNo‬يظهر زرين هام ‪( Yes‬نعم) ‪( No ,‬ل) ‪.‬‬ ‫‪-‬‬
‫‪ : YesNoCancel‬تظهر ‪ 3‬أأزرار يه ‪( Yes‬نعم) ‪( No ,‬ل) ‪( Cancel ,‬اإلغاء ا ألمر) ‪.‬‬ ‫‪-‬‬

‫‪ : MessageBoxIcon icon -4‬ومتثل أأيقونة الرساةل وتعترب شلك أأيقونة الرساةل دال عىل نوعها‬
‫وتظهر ا أليقونة جبانب نص الرساةل وتوجد ا أليقونة عىل عدة أأشاكل اكلتايل ‪:‬‬
‫‪ : Asterisk -‬أأيقونة تعرض حرف ‪ i‬مضن دائرة زرقاء اللون ‪.‬‬
‫‪64‬‬
‫‪ : Error‬أأيقونة تعرض حرف ‪ x‬ابللون ا ألبيض يف دائرة محراء اللون ‪.‬‬ ‫‪-‬‬
‫‪ : Exclamation‬أأيقونة تعرض اإشارة تعجب مضن مثلث أأصفر اللون ‪.‬‬ ‫‪-‬‬
‫‪ : Hand‬أأيقونة تعرض حرف ‪ x‬ابللون ا ألبيض يف دائرة محراء اللون ‪.‬‬ ‫‪-‬‬
‫‪ : Information‬أأيقونة تعرض حرف ‪ i‬مضن دائرة زرقاء اللون ‪.‬‬ ‫‪-‬‬
‫‪ : None‬بدون أأية أأيقونة ‪.‬‬ ‫‪-‬‬
‫‪ : Question‬أأيقونة تعرض اإشارة اإس تفهام يف دائرة ‪.‬‬ ‫‪-‬‬
‫‪ : Stop‬أأيقونة تعرض حرف ‪ x‬ابللون ا ألبيض يف دائرة محراء اللون ‪.‬‬ ‫‪-‬‬
‫‪ : Warning‬أأيقونة تعرض اإشارة تعجب مضن مثلث أأصفر اللون ‪.‬‬ ‫‪-‬‬

‫‪: MessageBoxDefultButton defultButton‬ومتثل الزر الإفرتايض اذلي يقع عليه‬ ‫‪-5‬‬


‫الرتكزي حال ظهور الرساةل وتوجد ‪ 3‬خيارات اكلتايل ‪:‬‬
‫‪ :Button1‬جتعل الزر ا ألول يف مربع الرساةل الزر الإفرتايض ‪.‬‬ ‫‪-‬‬
‫‪ : Button2‬جتعل الزر الثاين يف مربع الرساةل الزر الإفرتايض ‪.‬‬ ‫‪-‬‬
‫‪ : Button3‬جتعل الزر الثالث يف مربع الرساةل الزر الإفرتايض ‪.‬‬ ‫‪-‬‬

‫‪ : MessageBoxOptions options‬ومتثل خيارات عرض الرساةل وتوجد ‪ 4‬خيارات كام‬ ‫‪-6‬‬


‫ييل ‪:‬‬
‫‪ : DefaultDesktopOnly‬تعرض الرساةل عىل سطح املكتب الف ّعال ‪.‬‬ ‫‪-‬‬
‫‪ : RightAlign‬تكون حماذاة النص يف مربع الرساةل اإىل الميني ‪.‬‬ ‫‪-‬‬
‫‪ : RtlReading‬حتدد أأن ترتيب قراءة النص املعروض من الميني اإىل اليسار ‪.‬‬ ‫‪-‬‬
‫‪ : ServiceNotification‬تظهر الرساةل عىل شلك اإشعارات اخلدمة ‪.‬‬ ‫‪-‬‬

‫‪ ‬تنمتي نتيجة الطريقة ‪ Show‬اإىل مجموعة منط التعداد ‪ DialogResult‬ويه تدل عىل الزر اذلي نقر‬
‫عليه املس تخدم وحتتوي هذا المنط عىل عدة خيارات (قمي) اكلتايل ‪:‬‬
‫‪ : Abort -‬يدل عىل أأن الزر اذلي نقر عليه املس تخدم هو ‪. Abort‬‬
‫‪ : Cancel -‬يدل عىل أأن الزر اذلي نقر عليه املس تخدم هو ‪. Cancel‬‬
‫‪ : Ignore -‬يدل عىل أأن الزر اذلي نقر عليه املس تخدم هو ‪. Ignore‬‬
‫‪ : No -‬يدل عىل أأن الزر اذلي نقر عليه املس تخدم هو ‪. No‬‬
‫‪ : None -‬مل ينقر املس تخدم عىل أأي زر أأي أأن مربع احلوار الرشطي مس متر ابلعمل ‪.‬‬
‫‪ : Ok -‬يدل عىل أأن الزر اذلي نقر عليه املس تخدم هو ‪. Ok‬‬
‫‪ : Retry -‬يدل عىل أأن الزر اذلي نقر عليه املس تخدم هو ‪. Retry‬‬
‫‪ : Yes -‬يدل عىل أأن الزر اذلي نقر عليه املس تخدم هو ‪. Yes‬‬

‫‪65‬‬
‫‪ ‬تطبيق ‪ :16‬مصم برانجم ًا يظهر للمس تخدم رساةل تأأكيد خروج عند النقر عىل الزر ‪ X‬يف رشيط‬
‫عنوان الـ‪ .. Form‬يف حال مت النقر عىل الزر ‪ Yes‬يمت اخلروج من الربانمج أأما اإذا مت النقر عىل الزر‬
‫‪ No‬ل يمت اإغالق الـ‪ Form‬وابلتايل عدم اخلروج من الربانمج ؟‬
‫‪ -‬أأنشأأ ‪ Project‬جديد ابإمس ‪ .. P16‬تظهر الـ ‪... Form1‬‬
‫‪ -‬يف احلدث ‪ FormClosing‬للـ ‪ Form1‬اإكتب الكود ابلشلك التايل ‪:‬‬
‫)‪private void Form1_FormClosing(object sender, FormClosingEventArgs e‬‬
‫{‬
‫‪ ",‬هل تريد اخلروج من الربنامج بالفعل "(‪DialogResult r = MessageBox.Show‬‬
‫‪ ", MessageBoxButtons.YesNo, MessageBoxIcon.Question,‬تأكيد خروج"‬
‫;)‪MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign‬‬

‫)‪if (r == DialogResult.No‬‬
‫;‪e.Cancel = true‬‬
‫‪else‬‬
‫;‪e.Cancel = false‬‬
‫}‬
‫‪ //‬السطر ;‪ e.cancel=True‬يقوم بتعطيل حدث الإغالق ‪.‬‬
‫‪ -‬مق بتنفيذ الربانمج ‪ ..‬اإنقر عىل الزر ‪ X‬تظهر رساةل تأأكيد اخلروج اإنقر الزر ‪ No‬لحظ عدم‬
‫اخلروج من الربانمج ‪ ..‬أأعد النقر مرة أأخرى عىل الزر ‪ X‬تظهر رساةل تأأكيد اخلروج اإنقر الزر‬
‫‪ Yes‬يمت اخلروج من الربانمج ‪.‬‬

‫‪ ‬ظهور أأكرث من رساةل يف برانمج واحد ‪:‬‬


‫ميكن اإظهار أأكرث من رساةل يف نفس الـ‪ Project‬أأو يف نفس الـ‪ Form‬من املرشوع حبيث يمت‬
‫اإس تدعاء الطريقة ‪ Show‬من الصنف ‪ MessageBox‬يف لك مرة أأردان فهيا اإظهار رساةل وميكن أأن‬
‫تظهر لك رساةل بشلك خمتلف عن ا ألخرى من حيث أأزرار الرساةل و أأيقونة الرساةل ‪...‬‬
‫‪ ‬تطبيق ‪ :17‬مصم برانجم ًا ملسابقة عوامص ادلول يتكون من ‪ 3‬أأس ئةل لك سؤال يظهر يف رساةل‬
‫ويكون اجلواب علهيا بنعم أأو ل ودرجة لك سؤال ‪ 11‬درجات ويف هناية املسابقة تظهر رساةل فهيا‬
‫درجة املتسابق ؟‬
‫‪66‬‬
... Form1 ‫ تظهر الـ‬.. P17 ‫ جديد ابإمس‬Project ‫ أأنشأأ‬-

: ‫ اإكتب الكود ابلشلك التايل‬Form1 ‫ للـ‬Load ‫ يف احلدث‬-


private void Form1_Load(object sender, EventArgs e)
{
int deg = 0;
DialogResult r1, r2, r3;
r1 = MessageBox.Show("‫" عدن عاصمة اليمن‬, "‫" السؤال األول‬,
MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (r1 == DialogResult.No)
deg += 10;
r2 = MessageBox.Show(" ‫" واشنطن عاصمة الواليات املتحدة‬, "‫" السؤال الثاني‬,
MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (r2 == DialogResult.Yes)
deg += 10;
r3 = MessageBox.Show("‫" باريس عاصمة بريطانيا‬, "‫" السؤال الثالث‬,
MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (r3 == DialogResult.No)
deg += 10;
MessageBox.Show(": ‫ " نتيجة املسابقة هي‬+ deg.ToString() + " /30"
, "‫;)"النتيجة‬
this.Close();

: ‫ كام يف الصورة‬.. ‫ نفذ الربانمج و أأجب بنعم أأو ل مث لحظ النتيجة‬-

67
‫الفصل الثامن‬
‫أأحداث الفأأرة و أأحداث لوحة املفاتيح‬
‫‪Mouse Events & Keyboard Events‬‬

‫‪68‬‬
‫‪ ‬تشرتك الكثري من أأدوات التحمك ‪ Controls‬والـ‪ Form‬يف أأهنا متتكل نفس أأحداث الفأأرة و أأحداث‬
‫لوحة املفاتيح وهذه ا ألحداث تتودل من خالل أأفعال املس تخدم اليت حيدهثا عىل الفأأرة ولوحة املفاتيح ‪.‬‬
‫‪ ‬أأدوات التحمك ‪ : Controls‬يه ا ألدوات اليت تضاف عىل سطح الـ‪ Form‬أأما ا ألدوات ا ألخرى‬
‫تضاف أأسفل الـ‪ Form‬و أأشهر أأدوات الـ ‪ : Controls‬مربعات النصوص مثل ‪–..., TextBox‬‬
‫ا ألزرار مثل ‪ – ..., Button‬امللصقات مثل ‪ – ... , Label‬القوامئ مثل ‪ ...– ... , ListBox‬اإخل‪.‬‬
‫‪ ‬أأحداث الفأأرة ‪: Mouse Events‬‬
‫نس تطيع معاجلة الاحداث املتودلة عن اإس تخدام الفأأرة ‪ ,‬حركة الفأأرة يف الـ‪ Form‬والـ‪Controls‬‬
‫وكتابة الأكواد الربجمية بداخلها ‪ ..‬س نورد فامي ييل أأحداث الفأأرة املمكنة يف الصنف ‪ Control‬اذلي‬
‫يشلك ا ألساس للـامنذج وعنارص التحمك اكلتايل ‪:‬‬
‫‪ : MouseCaptureChanged -‬يقع عند تغري لقطة مؤرش الفأأرة ‪.‬‬
‫‪ : MouseClick -‬يقع عند النقر عىل عنرص التحمك نقرة واحدة ‪.‬‬
‫‪ : MouseDoubleClick -‬يقع عند النقر نقر ًا مزدوج ًا عىل عنرص الفأأرة ويوجد هذا احلدث‬
‫للـ‪ Form‬فقط ‪.‬‬
‫‪ : MouseDown -‬يقع عندما يضغط املس تخدم زر الفأأرة حنو ا ألسفل بيامن يكون مؤرش الفأأرة‬
‫فوق عنرص التحمك ‪.‬‬
‫‪ : MouseUp -‬يقع عندما حيرر املس تخدم الفأأرة (بعد الضغط عىل زر الفأأرة ورفع الإصبع عنه)‬
‫بيامن يكون مؤرش الفأأرة فوق عنرص التحمك ‪.‬‬
‫‪ : MouseEnter -‬يقع عندما يدخل مؤرش الفأأرة حدود عنرص التحمك ‪.‬‬
‫‪ : MouseHover -‬يقع عندما حيوم مؤرش الفأأرة عىل عنرص التحمك ( أأي يقف فرتة من الزمن) ‪.‬‬
‫‪ : MouseLeave -‬يقع عندما يغادر مؤرش الفأأرة حدود عنرص التحمك ‪.‬‬
‫‪ : MouseMove -‬يقع عندما يتحرك مؤرش الفأأرة فوق عنرص التحمك ‪.‬‬

‫‪ ‬تطبيق ‪ : 18‬مصم برانجم ًا توحض فيه الفرق بني أأحداث الفأأرة وكيفية حدوهثا ؟‬
‫‪ -‬أأنشأأ ‪ Project‬جديد ابإمس ‪ .. P18‬تظهر الـ‪ .. Form1‬أأضف زر ‪ Button‬مث اإضبط اخلاصية‬
‫‪ Text‬هل ابلقمية " أأحداث الفأأرة" ‪ ...‬تظهر الـ‪ Form‬كام يف الصورة ‪:‬‬

‫‪69‬‬
: ‫ نكتب الكود ابلشلك‬button1‫ للـ‬MouseClick ‫ يف احلدث‬-
private void button1_MouseClick(object sender, MouseEventArgs e)
{
button1.Text = "MouseClick";
}
Button‫ لحظ تغري عنوان الـ‬.. Button‫ مق ابلنقر عىل زر الـ‬.. ‫ نفذ الربانمج‬-

: ‫ اإكتب الكود ابلشلك‬button1‫ للـ‬MouseDown ‫ يف احلدث‬-


private void button1_MouseDown(object sender, MouseEventArgs e)
{
button1.Text = "MouseDown";
}
‫ مث اإضغط زر الفأأرة حنو ا ألسفل بدون أأن‬Button‫ حرك مؤرش الفأأرة فوق زر الـ‬.. ‫ نفذ الربانمج‬-
: ‫ كام يف الصورة‬Button‫ لحظ تغري عنوان الـ‬.. ‫ترفع اإصبعك عهنا‬

: ‫ اإكتب الكود ابلشلك‬button1‫ للـ‬MouseUp ‫ يف احلدث‬-


private void button1_MouseUp(object sender, MouseEventArgs e)
{
button1.Text = "MouseUp";
}
‫ مث اإضغط زر الفأأرة مث حرر الزر برفع‬Button‫ حرك مؤرش الفأأرة فوق زر الـ‬.. ‫ نفذ الربانمج‬-
: ‫ كام يف الصورة‬Button‫ لحظ تغري عنوان الـ‬.. ‫الإصبع عنه‬

: ‫ اإكتب الكود ابلشلك‬MouseEnter ‫ يف احلدث‬-


private void button1_MouseEnter(object sender, EventArgs e)

71
{
button1.Text = "MouseEnter";
}

Button‫ لحظ تغري عنوان الـ‬.. Button‫ حرك مؤرش الفأأرة اإىل حدود زر الـ‬.. ‫ نفذ الربانمج‬-

: ‫ اإكتب الكود ابلشلك‬button1‫ للـ‬MouseHover ‫ يف احلدث‬-


private void button1_MouseHover(object sender, EventArgs e)
{
button1.Text = "MouseHover";
}
)‫ متام ًا مث توقف عن احلركة لفرتة زمنية (حيوم‬Button‫ حرك مؤرش الفأأرة فوق زر الـ‬.. ‫ نفذ الربانمج‬-
: ‫ كام يف الصورة‬Button‫ لحظ تغري عنوان الـ‬..

: ‫ اإكتب الكود ابلشلك‬button1‫ للـ‬MouseLeave ‫ يف احلدث‬-


private void button1_MouseLeave(object sender, EventArgs e)
{
button1.Text = "MouseLeave";
}
‫ مث غادر مبؤرش الفأأرة خارج حدود زر‬Button‫ حرك مؤرش الفأأرة فوق زر الـ‬.. ‫ نفذ الربانمج‬-
: ‫ كام يف الصورة‬Button‫ لحظ تغري عنوان الـ‬.. Button‫الـ‬

: ‫ اإكتب الكود ابلشلك‬button1‫ للـ‬MouseMove ‫ يف احلدث‬-


private void button1_MouseMove(object sender, MouseEventArgs e)
{
button1.Text = "MouseMove";
}

71
‫‪ -‬نفذ الربانمج ‪ ..‬حرك مؤرش الفأأرة فوق زر الـ‪ Button‬بشلك مس متر وبدون توقف ‪ ..‬لحظ‬
‫الصورة ‪:‬‬

‫‪ ‬الاكئن ‪ MouseEventArgs e‬يكون ابرامرت يف الطريقة أأو املهنج (معاجل ا ألحداث) ألحداث الفأأرة‬
‫التالية ‪:‬‬
‫‪ MouseMove & MouseUp & MouseDown & MouseClick‬فقط ‪ ,‬وميتكل هذا‬
‫الاكئن عدة خصائص تظهر بعد كتابة ( ‪ ) e.‬ويه اكلتايل ‪:‬‬
‫‪ : Button -‬تدل عىل أأي زر من أأزرار الفأأرة قد ضغط عليه ‪.‬‬
‫‪ : Clicks -‬تدل عىل عدد املرات اليت مت فهيا ضغط زر الفأأرة وحتريره ‪.‬‬
‫‪ : Delta -‬تدل عىل مجموع موجب أأو سالب لعدد وحدات دورات جعةل الفأأرة ‪ ,‬وتقدر وحدة‬
‫ادلوران مبقدار دوران جعةل الفأأرة ملسافة تعادل ‪. 1 Notch‬‬
‫‪ : Location -‬تدل عىل قمية الإحدايث (السيين والصادي) ملوقع نقرة الفأأرة ‪.‬‬
‫‪ : X -‬تدل عىل الإحداثية ا ألفقية (حمور السينات) لنقرة الفأأرة ‪.‬‬
‫‪ : Y -‬تدل عىل الإحداثية العمودية (حمور الصادات) لنقرة الفأأرة ‪.‬‬
‫‪ ‬تطبيق ‪ :19‬مصم برانجم ًا يقوم عند النقر عىل الـ‪ Form‬مبعرفة ماييل ‪:‬‬
‫أأ‪ -‬زر الفأأرة اذلي مت النقر عليه من قبل املس تخدم (ا ألمين أأو ا أليرس أأو ا ألوسط) ؟‬
‫ب‪ -‬موقع الإحدايث ا ألفقي والعمودي للماكن اذلي مت النقر عليه من قبل املس تخدم ؟‬
‫‪ -‬أأنشأأ ‪ Project‬جديد ابإمس ‪ .. P19‬تظهر الـ‪... Form1‬‬
‫‪ -‬يف احلدث ‪ MouseDown‬للـ‪ Form1‬نكتب الكود التايل ‪:‬‬
‫)‪private void Form1_MouseDown(object sender, MouseEventArgs e‬‬
‫{‬
‫;))(‪MessageBox.Show(e.Button.ToString‬‬
‫}‬
‫‪ -‬مق بتنفيذ الربانمج ‪ ..‬اإنقر ابلزر ا ألمين للفأأرة عىل الـ‪ Form‬تظهر رساةل "‪ .. "Right‬اإنقر ابلزر‬
‫ا أليرس للفأأرة تظهر رساةل "‪ .. "Left‬اإنقر عىل جعةل الفأأرة (الزر ا ألوسط) تظهر رساةل‬
‫"‪ .. "Middle‬لحظ الصور ‪:‬‬

‫‪72‬‬
‫‪ -‬عطل الكود السابق بـ‪ Comment‬أأو مق مبسحه ‪ ..‬يف نفس احلدث ‪MouseDown‬‬
‫للـ‪ Form1‬اإكتب الكود ابلشلك ‪:‬‬
‫)‪private void Form1_MouseDown(object sender, MouseEventArgs e‬‬
‫{‬
‫;))(‪MessageBox.Show(e.Location.ToString‬‬
‫}‬
‫‪ -‬أأو ميكن كتابة الكود ابلشلك ‪:‬‬
‫;))(‪MessageBox.Show(e.X.ToString()+ " , " + e.Y.ToString‬‬

‫‪ -‬نفذ الربانمج ‪ ..‬مث اإنقر يف أأي ماكن عىل الـ‪ Form‬تظهر رساةل موقع الإحدايث كام يف الصورة ‪:‬‬

‫‪ ‬أأحداث لوحة املفاتيح ‪: Keyboard Events‬‬


‫ا ألفعال اليت تتودل بسبب تعامل املس تخدم مع أأي مفتاح من لوحة املفاتيح تسمى أأحداث لوحة‬
‫املفاتيح ‪ ,‬ميكن أأن تعاجل أأحداث لوحة املفاتيح يف الامنذج ‪ Forms‬والعديد من عنارص التحمك‬
‫‪ Controls‬وذكل من خالل ا ألحداث التالية ‪:‬‬
‫‪ : KeyDown -‬يقع عندما يضغط املس تخدم أأحد املفاتيح ل ألسفل بيامن ميتكل عنرص التحمك‬
‫الرتكزي ‪.‬‬
‫‪ : KeyPress -‬يقع عندما يضغط املس تخدم أأحد املفاتيح بيامن ميتكل عنرص التحمك الرتكزي ‪.‬‬
‫‪ : KeyUp -‬يقع عندما حيرر أأحد املفاتيح ( رفع ا ألصبع عن املفتاح بعد الضغط عليه ) بيامن‬
‫ميتكل عنرص التحمك الرتكزي‪.‬‬
‫‪ ‬متتكل الطريقة (معاجل ا ألحداث) من أأجل احلدثني ‪ KeyUp & KeyDown‬ابرامرت (وس يط) ‪e‬‬
‫من النوع ‪ KeyEventArgs‬واذلي ميتكل عدة خصائص اكلتايل ‪:‬‬
‫‪ : Alt -‬حتوي قمية من نوع ‪ Boolean‬فامي اإذا اكن املفتاح ‪ Alt‬قد ضُ غط من قبل املس تخدم‬
‫عندها تكون القمية ‪ True‬أأما اإذا ضُ غط مفتاح أآخر تكون القمية ‪. False‬‬
‫‪ : Control -‬حتوي قمية من نوع ‪ Boolean‬فامي اإذا اكن املفتاح ‪ Ctrl‬قد ضُ غط من قبل‬
‫املس تخدم عندها تكون القمية ‪ True‬أأما اإذا ضُ غط مفتاح أآخر تكون القمية ‪. False‬‬
‫‪ : Shift -‬حتوي قمية من نوع ‪ Boolean‬فامي اإذا اكن املفتاح ‪ Shift‬قد ضُ غط من قبل املس تخدم‬
‫عندها تكون القمية ‪ True‬أأما اإذا ضُ غط مفتاح أآخر تكون القمية ‪. False‬‬
‫‪ : Handled -‬حتوي أأو تضبط قمية من نوع ‪ Boolean‬حتدد فامي اإذا اكن احلدث قد عُوجل أأم ل‪.‬‬
‫‪ : KeyCode -‬حتوي ترمزي لوحة املفاتيح للمفتاح اذلي سبب احلدث ‪ KeyDown‬أأو احلدث‬
‫‪. KeyUp‬‬
‫‪ : KeyData -‬حتوي بياانت لوحة املفاتيح للمفتاح من أأجل احلدث ‪ KeyDown‬أأو احلدث‬
‫‪. KeyUp‬‬

‫‪73‬‬
‫‪ : KeyValue -‬حتوي قمية املفتاح بش يفرة ا أليسيك ‪ ASCII Code‬ابلنظام العرشي من أأجل‬
‫احلدث ‪ KeyDown‬أأو احلدث ‪ KeyUp‬مث ًال "‪ "A‬قميته ‪. ... 65‬‬
‫‪ : Modifiers -‬حتوي عىل مؤرشات احملددات من أأجل احلدث ‪ KeyDown‬أأو احلدث‬
‫‪ KeyUp‬ويه تدل عىل أأي من أأزرار احملددات (‪ Ctrl‬أأو ‪ Shift‬أأو ‪ )Alt‬قد ضُ غط ويف هذه‬
‫الك عىل حده وميكن أأن تكون انجت معلية‬‫احلاةل تكون القمية ‪ Ctrl‬أأو ‪ Shift‬أأو ‪ Alt‬عىل التوايل ً‬
‫‪ OR‬عىل قمي احملددات ‪ ,‬أأما اإذا ضُ غط عىل مفتاح أآخر فاإن القمية تكون ‪ .. None‬ومن‬
‫الطبيعي أأن يكون اإس تخدام اخلصائص ‪ Alt & Shift & Control‬أأسهل من اخلاصية‬
‫‪. Modifiers‬‬
‫‪ ‬تطبيق‪ : 21‬مصم برانجم ًا يقوم مبجرد الضغط عىل املفتاح يظهر رساةل حتتوي عىل ترمزي املفتاح وقميته‬
‫ابلنظام العرشي يف ‪ ASCII Code‬؟‬
‫‪ -‬أأنشأأ ‪ Project‬جديد ابإمس ‪ .. P20‬تظهر الـ‪... Form1‬‬
‫‪ -‬يف احلدث ‪ KeyDown‬للـ‪ Form1‬نكتب الكود ابلشلك ‪:‬‬
‫)‪private void Form1_KeyDown(object sender, KeyEventArgs e‬‬
‫{‬
‫" ‪MessageBox.Show("The ASCII Code of " + e.KeyCode.ToString() + " is :‬‬
‫;))(‪+ e.KeyValue.ToString‬‬
‫}‬
‫‪ -‬نفذ الربانمج ‪ ..‬اإضغط مث ًال عىل املفتاح ‪ Shift‬تظهر الرساةل كام يف الصورة ‪:‬‬

‫‪ ‬متتكل الطريقة ( معاجل ا ألحداث ) من أأجل احلدث ‪ KeyPress‬ابرامرت (وس يط) ‪ e‬من النوع‬
‫‪ KeyPressEventArgs‬واذلي ميتكل اخلصائص التالية ‪:‬‬
‫‪ : Handled -‬تضبط أأو تعيد قمية من نوع ‪ Boolean‬حتدد فامي اإذا اكن احلدث ‪ KeyPress‬قد‬
‫عوجل أأم ل ‪ ,‬فاإذا ضُ بطت هذه اخلاصية عىل القمية ‪ True‬فاإن ‪ VC#‬لن تعاجل هذا املفتاح ‪,‬‬
‫وبذكل اإذا أأردت أأن حتذفه مفا عليك اإل أأن تضبط اخلاصية ‪ Handled‬عىل القمية ‪ True‬دون‬
‫احلاجة ألية معاجلة اإضافية ‪.‬‬
‫‪ : KeyChar -‬حتوي أأو تعيد قمية من نوع ‪ Char‬متثل احملرف املوافق للمفتاح املضغوط ‪.‬‬
‫‪ ‬تطبيق ‪ :21‬مصم برانجم ًا لـ‪ Form‬حتتوي عىل مربع نص ‪ TextBox‬ل يقبل اإل أأرقام ؟‬
‫‪ -‬أأنشأأ ‪ Project‬جديد ابإمس ‪ .. P21‬تظهر الـ‪ .. Form1‬أأضف أأداة ‪ TextBox‬اإىل الـ‪Form‬‬
‫‪ -‬يف احلدث ‪ KeyPress‬للـ‪ textBox1‬اإكتب الكود ابلشلك التايل ‪:‬‬
‫)‪private void textBox1_KeyPress(object sender, KeyPressEventArgs e‬‬
‫{‬
‫)'‪if (e.KeyChar < '0' || e.KeyChar > '9‬‬
‫;‪e.Handled = true‬‬

‫‪74‬‬
‫}‬
‫‪ -‬مق بتنفيذ الربانمج ‪ ..‬أأدخل أأرقام اإىل مربع النص ‪ ..‬لحظ أأنه يكتهبا ‪ ..‬مق ابإدخال حروف أأو رموز‬
‫‪ ..‬لحظ أأنه ل يكتهبا مبعىن أأنه يعطل مفاتيح تكل احلروف أأو الرموز ‪ ..‬كام يف الصورة ‪:‬‬

‫‪ ‬متارين غري حملوةل ‪-:‬‬


‫‪ -1‬مصم برانجم ًا لتعلمي نطق احلروف الإجنلزيية حبيث اإذا قام املس تخدم ابلضغط عىل احلرف من‬
‫لوحة املفاتيح فاإن الربانمج يصدر صو ًات ينطق هذا احلرف ؟‬

‫‪ -2‬مصم برانجم ًا لـ‪ Form‬حيتوي عىل مربع نص ‪ TextBox‬ل يقبل اإل حروف فقط مع اإماكنية‬
‫اإس تخدام مفاتيح التحرير التالية ‪-:‬‬
‫مفتاح املسطرة ‪ – Space‬مفتاح احلذف ‪ – Delete‬مفتاح احلذف للخلف ‪ BackSpace‬؟‬

‫‪ -3‬مصم برانجم ًا لـ‪ Form‬حيتوي عىل زر ‪ Button‬مبجرد الضغط عىل زر الفأأرة ا أليرس فوق زر‬
‫الـ‪ Button‬وحسبه من ماكنه وإافالته اإىل ماكن أآخر عىل الـ‪ Form‬فاإنه ينتقل اإىل املاكن اجلديد‬
‫( مبعىن تغيري موقع زر الـ‪ Button‬عىل الـ‪ Form‬ابلسحب والإفالت يف زمن التنفيذ) ؟‬

‫‪ -4‬مصم برانجم ًا لـ‪ Form‬حيتوي عىل ‪ 3‬أأدوات مربعات نصوص ‪( TextBox‬حتت بعض) حبيث يمت‬
‫التنقل بني مربعات النص بعد اإدخال البياانت اإلهيا ابلضغط عىل املفتاح ‪( Enter‬بد ًل عن‬
‫املفتاح ‪ )Tab‬؟‬

‫‪75‬‬
‫الفصل التاسع‬
‫اخلصائص املشرتكة بني ا ألدوات‬
‫‪Common properties between tools‬‬

‫‪76‬‬
‫‪ -‬توجد مجموعة من اخلصائص اليت تشرتك فهيا أأكرث من أأداة ‪ Tool‬أأو عنرص حتمك ‪ Control‬مثل‬
‫الـ‪ … , ListBox , Label , Button , TextBox‬اإخل وكذكل الـ‪ , Form‬وميكن ضبط‬
‫هذه اخلصائص يدو ًاي يف زمن التصممي من انفذة اخلصائص أأو ميكن ضبطها برجمي ًا يف زمن الربجمة‬
‫بكتابة الأكواد الربجمة يف انفذة الـ‪ .. Code‬سنرسد اخلصائص مع بعض ا ألمثةل اكلتايل ‪-:‬‬
‫‪ -1‬اخلاصية ‪ : Name‬وتعين الإمس الربجمي ل ألداة وتس تقبل وتعيد قمية من نوع ‪ String‬ويه‬
‫خاصية متتلكها مجيع ا ألدوات يف ‪ ..VC#.net‬عند اإضافة ا ألداة يمت اإعطاء تسمية اإفرتاضية‬
‫ل ألداة تضم اإمس ا ألداة متبوع ًا برمق مث ًال ‪ ... ,textBox2 , Form1‬لكن عىل املربمج‬
‫احملرتف اإعادة تسمية ا ألداة ابإس تخدام البادئة ( وتكون البادئة من ‪ 3‬أأحرف ) ملحوقة‬
‫بلكمة تدل عىل وظيفة ا ألداة يف الربانمج احلايل وميكن رسد أأسامء بعض ا ألدوات كام يف‬
‫اجلدول ‪:‬‬
‫مثال عىل تسمية برجمية‬ ‫البادئة‬ ‫الإمس الإفرتايض‬ ‫ا ألداة‬
‫‪frmfrist‬‬ ‫‪frm‬‬ ‫‪Form1‬‬ ‫المنوذج (‪)Form‬‬
‫‪btnexit‬‬ ‫‪btn‬‬ ‫‪button1‬‬ ‫زر أأمر (‪)Button‬‬
‫‪txtnumber‬‬ ‫‪txt‬‬ ‫‪textBox1‬‬ ‫مربع نص (‪)TextBox‬‬
‫‪lbl‬‬ ‫‪lbl‬‬ ‫أأداة العنوان (ملصق) (‪label )Label‬‬
‫‪lstoddnumber‬‬ ‫‪lst‬‬ ‫‪listBox1‬‬ ‫مربع قامئة (‪)ListBox‬‬
‫‪chktest‬‬ ‫‪chk‬‬ ‫مربع اإختيار (‪checkedBox )CheckedBox‬‬
‫… وهكذا ( سيمت كتابة التسمية الربجمية للك أأداة عند تناولها لك مهنا عىل حده )‬
‫‪ -2‬اخلاصية ‪ :Text‬وتعين عنوان ا ألداة أأو الإمس اذلي يظهر عىل ا ألداة ‪ ..‬تس تقبل وتعيد قمية‬
‫من نوع ‪ String‬وتشرتك فهيا مجيع عنارص التحمك مثل الـ‪, Label , button , Form‬‬
‫‪ ...‬ويمت اإس ناد قمية نصية لها يف مجيع ا ألدوات يف زمن التصممي والربجمة فقط ما عدا أأداة‬
‫مربع النص‪ TextBox‬ومش تقاهتا فبالإماكن اإس ناد قمية نصية يف مجيع ا ألزمنة مبا فهيا زمن‬
‫التنفيذ ‪.‬‬
‫‪ ‬تطبيق‪ : 22‬طبق و أأضبط اخلاصيتني ‪ Text , Name‬عىل أأداة زر أأمر ‪ Button‬؟‬
‫‪ -‬مق ابإنشاء ‪ Project‬جديد ابإمس ‪ .. P22‬تظهر الـ‪ .. Form1‬أأضف أأداة زر أأمر ‪.. Button‬‬
‫لحظ أأن قمية اخلاصية ‪ Name‬يه ‪ button1‬مق بتعديلها وإاعادة تسمية ا ألداة ابلقمية‬
‫"‪ ... "btntitle‬مق بضبط اخلاصية ‪ Text‬برجمي ًا مبجرد حتميل الـ‪... Form‬‬
‫‪ -‬يف احلدث ‪ Load‬للـ‪ Form1‬نكتب الكود ابلشلك التايل ‪-:‬‬
‫)‪private void Form1_Load(object sender, EventArgs e‬‬
‫{‬
‫;"‪btntitle.Text = "Hello in C#‬‬
‫}‬
‫‪ -‬مق بتنفيذ الربانمج ‪ ..‬لحظ شلك الزر قبل التنفيذ وبعد التنفيذ كام يف الصور ‪:‬‬

‫‪77‬‬
‫بعد التنفيذ‬ ‫قبل التنفيذ‬

‫‪ -3‬اخلاصية ‪ : Backcolor‬وتعين لون خلفية ا ألداة ‪ ..‬تس تقبل وتعيد قمية من نوع الصنف‬
‫‪ .. Color‬وتشرتك فهيا معظم عنارص التحمك ‪.‬‬
‫‪ -4‬اخلاصية ‪ : Forecolor‬وتعين لون عنوان ا ألداة أأو اللون ا ألمايم ل ألداة ‪ ..‬تس تقبل وتعيد‬
‫قمية نوع الصنف ‪ .. Color‬وتشرتك فهيا معظم عنارص التحمك ‪.‬‬
‫‪ ‬يف التطبيق السابق (‪ )22‬أأضف زري ‪ Button‬و أأضبط اخلصائص وفق اجلدول التايل‪-:‬‬
‫اخلاصية ‪Text‬‬ ‫اخلاصية ‪Name‬‬ ‫ا ألداة‬
‫لون خلفية الزر‬ ‫‪btnbackcolor‬‬ ‫‪button1‬‬
‫لون عنوان الزر‬ ‫‪btnforecolor‬‬ ‫‪button2‬‬
‫‪ -‬مق ابإضافة أأداة ‪( Colordialog‬مربع حوار اللون) ابمس ‪... colordialog1‬‬
‫‪ -‬يف احلدث ‪ Click‬للـ‪ btnbackcolor‬نكتب الكود ابلشلك ‪-:‬‬
‫)‪private void btnbackcolor_Click(object sender, EventArgs e‬‬
‫{‬
‫)‪if (colorDialog1.ShowDialog() == DialogResult.OK‬‬
‫;‪btntitle.BackColor = colorDialog1.Color‬‬
‫}‬
‫‪ -‬يف احلدث ‪ Click‬للـ‪ btnforecolor‬نكتب الكود ابلشلك ‪-:‬‬
‫)‪private void btnforecolor_Click(object sender, EventArgs e‬‬
‫{‬
‫)‪if (colorDialog1.ShowDialog() == DialogResult.OK‬‬
‫;‪btntitle.ForeColor = colorDialog1.Color‬‬
‫}‬
‫‪ -‬مق بتنفيذ الربانمج ‪ ..‬اإنقر عىل الزر " لون خلفية الزر " ‪ ..‬تظهر انفذة ا أللوان حدد اللون مث‬
‫أأنقر‪ .. Ok‬لحظ تغري لون خلفية الزر ‪ .. btntitle‬اإنقر عىل الزر " لون عنوان الزر " ‪ ..‬تظهر‬
‫انفذة ا أللوان حدد اللون مث اإنقر ‪ ... Ok‬كرر العملية أأكرث من مرة واس متتع ‪.‬‬

‫‪ -5‬اخلاصية ‪ : Font‬وتعين اخلط لعنوان ا ألداة وتتضمن عدة خصائص للخط تمتثل يف ‪:‬‬
‫نوع اخلط ‪ ,‬جحم اخلط ‪ ,‬منط اخلط ‪ ,‬حتته خط ‪ ,‬يتوسطه خط ‪... ,‬‬
‫‪78‬‬
‫وتشرتك يف هذه اخلاصية معظم عنارص التحمك ‪ ..‬تس تقبل وتعيد قمية من نوع الصنف ‪. font‬‬
‫‪ -6‬اخلاصية ‪ : AutoSize‬تقوم ابإعادة حتجمي ا ألداة مبا يتناسب مع جحم حمتوايهتا مثل جحم‬
‫النص املوجود فهيا ‪ ..‬تس تقبل وتعيد قمية من نوع ‪ Boolean‬اإما ‪ True‬أأو ‪ .. False‬مجيع‬
‫ا ألدوات اإفرتاضي ًا حتمل فهيا اخلاصية القمية ‪ False‬ما عدا أأداة العنوان ‪ Label‬فاإن القمية‬
‫الإفرتاضية هل ‪ True‬حبيث يتغري جحم الـ‪ Label‬حبجم النص املوجود فيه ‪.‬‬
‫‪ ‬يف التطبيق السابق (‪ : )22‬مق ابإجراء التعديالت التالية ‪:‬‬
‫‪ -‬أأضف زر ‪ Button‬و أأضبط اخلاصية ‪ Name‬ابلقمية "‪ "btnfont‬واضبط اخلاصية ‪Text‬‬
‫ابلقمية " خط عنوان الزر " ‪..‬‬
‫‪ -‬أأضف أأداة ‪ Fontdialog‬ابإمس ‪... fontdialog1‬‬
‫‪ -‬يف احلدث ‪ Click‬للـ‪ btnfont‬نكتب الكود ابلشلك ‪-:‬‬
‫)‪private void btnfont_Click(object sender, EventArgs e‬‬
‫{‬
‫;‪btntitle.AutoSize = true‬‬
‫)‪if (fontDialog1.ShowDialog() == DialogResult.OK‬‬
‫;‪btntitle.Font = fontDialog1.Font‬‬
‫}‬
‫‪ -‬مق بتنفيذ الربانمج ‪ ..‬اإنقر عىل الزر " خط عنوان الزر " ‪ ..‬تظهر انفذة اخلط ‪ ..‬اضبط جحم‬
‫اخلط مث ًال ‪ .. 24‬لحظ تغري جحم اخلط وابلتايل يتغري جحم الزر ‪.. btntitle‬كرر العملية أأكرث‬
‫من مرة ولحظ تغري جحم الزر بتغري جحم النص املوجود بداخهل ‪ ...‬إاس متتع ‪.‬‬

‫‪ -7‬اخلاصية ‪ : Enabled‬وتعين أأن ا ألداة تعمل أأو ل ‪ ..‬تس تقبل وتعيد قمية من نوع ‪Boolean‬‬
‫‪ ..‬يف حاةل اكنت القمية ‪ True‬يمت تفعيل أأو متكني ا ألداة ويف حاةل اكنت القمية ‪ False‬يمت‬
‫تعطيل ا ألداة ‪.‬‬
‫‪ ‬يف التطبيق السابق (‪ : )22‬مق ابإجراء التعديالت التالية ‪:‬‬
‫‪ -‬مق ابإضافة زر ‪ Button‬واضبط اخلاصية ‪ Name‬ابلقمية "‪ "btnenabled‬واضبط اخلاصية‬
‫‪ Text‬ابلقمية "تعطيل الزر" ‪.‬‬
‫‪ -‬يف احلدث ‪ Click‬للـ‪ btntitle‬نكتب الكود ابلشلك ‪-:‬‬
‫)‪private void btntitle_Click(object sender, EventArgs e‬‬
‫{‬
‫;)" لغةالسي شارب متيز وإبداع"(‪MessageBox.Show‬‬
‫}‬

‫‪79‬‬
‫‪ -‬يف قسم الترصحيات أأعىل انفذة الـ‪ Code‬نكتب الكود اكلتايل ‪-:‬‬
‫;‪Boolean n1 = true‬‬

‫‪ -‬يف احلدث ‪ Click‬للـ‪ btnenabled‬نكتب الكود ابلشلك ‪:‬‬


‫)‪private void btnenabled_Click(object sender, EventArgs e‬‬
‫{‬
‫)‪if (n1 == true‬‬
‫{‬
‫;‪n1 = false‬‬
‫;‪btntitle.Enabled = false‬‬
‫;" متكن الزر " = ‪btnenabled.Text‬‬
‫}‬
‫‪else‬‬
‫{‬
‫;‪n1 = true‬‬
‫;‪btntitle.Enabled = true‬‬
‫;" تعطيل الزر " = ‪btnenabled.Text‬‬
‫}‬
‫}‬
‫‪ -‬مق بتنفيذ الربانمج ‪ ..‬اإنقر عىل الزر "‪ "Hello in C#‬تظهر رساةل "لغة اليس شارب متزي‬
‫وإابداع" ‪ ..‬مق ابلنقر عىل الزر "تعطيل الزر" ‪ ..‬حاول النقر عىل الزر "‪ "Hello in C#‬مرة‬
‫أأخرى لحظ تعطيل الزر ‪ ..‬اإنقر الزر "متكني الزر" ‪ ..‬لحظ تفعيل الزر "‪.. "Hello in C#‬‬
‫مق ابلنقر عليه ‪ ..‬لحظ ظهور الرساةل ‪ ..‬كرر العملية أأكرث من مرة واس متتع ‪...‬‬

‫‪ -8‬اخلاصية ‪ : Visible‬وتعين إاظهار أأو اإخفاء ا ألداة ‪ ..‬تعيد وتس تقبل قمية من نوع ‪Boolean‬‬
‫يف حال اكنت القمية‪ True‬يعين إاظهار ا ألداة أأما اإذا اكنت القمية‪ False‬يعين اإخفاء ا ألداة‬
‫وتشرتك فهيا معظم عنارص التحمك ‪.‬‬
‫‪ ‬يف التطبيق السابق(‪ : )22‬مق ابإجراء التعديالت التالية‪:‬‬
‫‪ -‬أأضف زر ‪ Button‬واضبط اخلاصية ‪ Name‬ابلقمية "‪ "btnvisible‬واضبط اخلاصية ‪Text‬‬
‫ابلقمية "اإخفاء الزر" ‪...‬‬
‫‪ -‬يف قسم الترصحيات أأعىل انفذة الـ‪ Code‬نكتب الكود التايل ‪-:‬‬
‫;‪Boolean n2 = true‬‬
‫‪ -‬يف احلدث ‪ Click‬للـ‪ btnvisible‬نكتب الكود ابلشلك ‪-:‬‬
‫)‪private void btnvisible_Click(object sender, EventArgs e‬‬
‫{‬
‫)‪if (n2 == true‬‬
‫{‬
‫;‪n2 = false‬‬
‫;‪btntitle.Visible = false‬‬
‫;" إظهار الزر" = ‪btnvisible.Text‬‬

‫‪81‬‬
‫}‬
‫‪else‬‬
‫{‬
‫;‪n2 = true‬‬
‫;‪btntitle.Visible = true‬‬
‫;" إخفاء الزر" = ‪btnvisible.Text‬‬
‫}‬
‫}‬
‫‪ -‬مق بتنفيذ الربانمج ‪ ..‬اإنقر عىل الزر " اإخفاء الزر" ‪ ..‬لحظ اإختفاء الزر " ‪ .. "Hello in C#‬مق‬
‫ابلنقر عىل الزر "اإظهار الزر" ‪ ..‬لحظ ظهور الزر ‪...‬‬

‫‪ -9‬اخلاصية ‪ : Cursor‬تسمح بتغيري شلك مؤرش الفأأرة أأثناء مروره فوق ا ألداة املرتبطة هبا ‪..‬‬
‫ولها عدة أأشاكل ‪ ..‬اإس تعرض ذكل من انفذة اخلصائص من اخلاصية ‪ Cursor‬مثل أأو‬
‫‪ ...‬اإخل ذكل من أأشاكل مؤرش املاوس ‪ ..‬القمية الإفرتاضية لهذه اخلاصية يف مجيع عنارص‬
‫التحمك يه ‪ Default‬وتعين الشلك الإفرتايض ملؤرش املاوس وابلإماكن تغيريها كام س بق ‪..‬‬
‫تس تقبل وتعيد قمية من ‪... Cursors‬‬
‫‪ ‬يف التطبيق السابق (‪ : )22‬مق إابجراء التعديالت التالية‪:‬‬
‫‪ -‬يف احلدث ‪ Load‬للـ‪ Form1‬مق ابإضافة الكود التايل ‪-:‬‬
‫;‪btntitle.Cursor = Cursors.NoMove2D‬‬
‫‪ -‬مق بتنفيذ الربانمج ‪ ..‬حرك مؤرش الفأأرة فوق الزر "‪ .. "Hello in C#‬لحظ تغري شلك مؤرش‬
‫الفارة ‪.‬‬
‫‪ -11‬اخلاصية ‪ : Location‬تعين موقع ا ألداة ابلنس بة للـ‪ Form‬أأو موقع الـ ‪ Form‬ابلنس بة‬
‫للشاشة‪ ..‬وحتتوي عىل قميتني من نوع ‪ int‬هام ‪ X‬حمور السينات & ‪ Y‬حمور الصادات‬
‫داخل داةل البناء ‪ .. Point‬وتشرتك فهيا معظم عنارص التحمك ‪.‬‬
‫‪ -11‬اخلاصية ‪ : Size‬وتعين جحم ا ألداة وحتتوي عىل قميتني من نوع ‪ int‬هام ‪ Width‬العرض ‪,‬‬
‫‪ Height‬ا إلرتفاع داخل داةل البناء ‪ .. Size‬وتشرتك فهيا معظم عنارص التحمك ‪.‬‬

‫‪ ‬تطبيق ‪ : 23‬مصم برانجم ًا يس تقبل ‪ 4‬قمي تضبط موقع وجحم الـ‪ Form‬ويمت اإدخال القمي يف مربعات‬
‫نص ؟‬
‫‪ -‬مق ابإنشاء ‪ Project‬جديد ابإمس ‪ .. P23‬تظهر الـ‪ .. Form1‬مق ابإ ضافة ‪ 4‬مربعات نص & ‪4‬‬
‫ملصقات ( أأداة عنوان) & ‪ 2‬زر أأمر و أأضبط اخلصائص كام يف اجلدول ‪-:‬‬
‫‪81‬‬
‫اخلاصية ‪Text‬‬ ‫اخلاصية ‪Name‬‬ ‫اإمس ا ألداة‬
‫‪X‬‬ ‫‪lblx‬‬ ‫‪label1‬‬
‫‪Y‬‬ ‫‪lbly‬‬ ‫‪label2‬‬
‫‪Width‬‬ ‫‪lblwidth‬‬ ‫‪label3‬‬
‫‪Height‬‬ ‫‪lblheight‬‬ ‫‪label4‬‬
‫ـــــــــــــــــــــــــــــــ‬ ‫‪txtx‬‬ ‫‪textBox1‬‬
‫ـــــــــــــــــــــــــــــــ‬ ‫‪txty‬‬ ‫‪textBox2‬‬
‫ــــــــــــــــــــــــــــــ‬ ‫‪txtwidth‬‬ ‫‪textBox3‬‬
‫ـــــــــــــــــــــــــــــــ‬ ‫‪txtheight‬‬ ‫‪textBox4‬‬
‫تغيري موقع المنوذج‬ ‫‪btnlocation‬‬ ‫‪button1‬‬
‫تغيري جحم المنوذج‬ ‫‪btnsize‬‬ ‫‪button2‬‬
‫‪ -‬يف احلدث ‪ Click‬للـ‪ btnlocation‬نكتب الكود ابلشلك ‪-:‬‬
‫)‪private void btnlocation_Click(object sender, EventArgs e‬‬
‫{‬
‫;)‪int x = int.Parse(txtx.Text‬‬
‫;)‪int y = int.Parse(txty.Text‬‬
‫;)‪this.Location = new Point(x, y‬‬
‫}‬
‫‪ -‬يف احلدث ‪ Click‬للـ‪ btnsize‬نكتب الكود ابلشلك ‪-:‬‬
‫)‪private void btnsize_Click(object sender, EventArgs e‬‬
‫{‬
‫;)‪int w = int.Parse(txtwidth.Text‬‬
‫;)‪int h = int.Parse(txtheight.Text‬‬
‫;)‪this.Size = new Size(w, h‬‬
‫}‬
‫‪ -‬مق بتنفيذ الربانمج ‪ ..‬أأضف قمي للـ ‪ Y & X‬مث أأنقر الزر "تغيري موقع المنوذج" ‪ ..‬لحظ تغري موقع‬
‫الـ‪ Form‬ابلنس بة للشاشة وفق القمي املدخةل ‪ ..‬أأضف قمي للـ ‪ Location & Width‬مث أأنقر‬
‫الزر "تغيري جحم المنوذج" ‪ ..‬لحظ تغري جحم الـ‪ Form‬وفق القمي املدخةل ‪ ..‬كرر العملية و أأدخل‬
‫قمي أأخرى ‪ ..‬إاس متتع ‪.‬‬

‫‪ -12‬اخلاصية ‪ : Tag‬حتوي بياانت تعريفية يكتهبا املربمج عن ا ألداة ‪ ..‬تس تقبل وتعيد قمية من‬
‫نوع ‪ .. String‬وتشرتك فهيا معظم عنارص التحمك ‪ ..‬لكتابة معلومات عن مربع نص مث ًال‬
‫برجمي ًا نكتب الكود ابلشلك ‪-:‬‬
‫;" حمور السينات " = ‪txtx.Tag‬‬

‫‪82‬‬
‫‪ -13‬اخلاصية ‪ : Locked‬تعين اإقفال ا ألداة حبيث ل ميكن التحمك بأأبعادها أأو تغيري موقعها‬
‫ويظهر القفل يف مرحةل التصممي املريئ ويمت ضبط هذه اخلاصية يدو ًاي فقط ول ميكن ضبطها‬
‫برجمي ًا ‪ ..‬تس تقبل وتعيد قمية من نوع ‪ .. Boolean‬يف حال اكنت ‪True‬يمت اإقفال ا ألداة أأما‬
‫يف حال اكنت ‪ False‬فاإنه يمت حترير أأو فتح القفل لحظ اإقفال مربع النص كام يف الصورة ‪-:‬‬

‫‪ -14‬اخلاصية ‪ : Anchor‬تدل عىل أأي من حواف ا ألداة قدمت اإرساؤها عىل الـ‪.. Form‬‬
‫تس تقبل وتعيد قمية من ‪ AnchorStyle‬وحتمتل عدة قمي اكلتايل ‪:‬‬
‫‪ : None -‬بدون اإرساء العنرص ويه القمية الإفرتاضية ‪.‬‬
‫‪ : Bottom -‬اإرساء العنرص من اجلهة السفىل ‪.‬‬
‫‪ : Top -‬اإرساء العنرص من اجلهة العليا ‪.‬‬
‫‪ : Left -‬اإرساء العنرص من اجلهة اليرسى ‪.‬‬
‫‪ : Right -‬اإرساء العنرص من اجلهة الميىن ‪.‬‬
‫وميكن اإرساء العنرص من أأكرث من هجة ‪ ..‬تشرتك معظم عنارص التحمك يف هذه اخلاصية ‪.‬‬
‫‪ ‬تطبيق ‪ : 24‬مصم برانجم ًا يقوم ابإرساء أأداة ‪ RichRextBox‬من مجيع اجلهات ا ألربع يدو ًاي ‪ ..‬نفذ‬
‫الربانمج ‪ ..‬مق بتغيري جحم الـ‪ .. Form‬ولحظ ماذا حيدث ؟‬
‫‪ -‬مق ابإنشاء ‪ Project‬جديد ‪ ..‬تظهر الـ‪ .. Form1‬مق ابإضافة أأداة ‪ RichTextBox1‬و أأجعل‬
‫جحمها بنفس جحم الـ‪ .. Form‬اضبط اخلاصية ‪ Anchor‬للـ‪ richTextBox1‬من مجيع اجلهات‬
‫ا ألربع ‪ ..‬مق بتنفيذ الربانمج ‪ ..‬أأعد حتجمي الـ‪ Form‬من احلواف ‪ ..‬لحظ أأن جحم أأداة‬
‫‪ RichTextBox‬تتغري بتغري الـ‪ .. Form‬كرر العملية واس متتع ‪.‬‬

‫‪83‬‬
‫‪ -15‬اخلاصية ‪ : Dock‬تدل عىل أأية حافة من حواف ا ألب يلتصق العنرص ‪ ..‬تس تقبل وتعيد‬
‫قمية من نوع ‪ DockStyle‬وحتمتل عدة قمي اكلتايل ‪:‬‬
‫‪ : None‬عدم اإلصاق العنرص عىل أأي حافة من حواف الـ‪. Form‬‬ ‫‪-‬‬
‫‪ : Fill‬اإلصاق العنرص عىل مجيع حواف الـ‪. Form‬‬ ‫‪-‬‬
‫‪ : Top‬اإلصاق العنرص عىل احلافة العليا للـ‪. Form‬‬ ‫‪-‬‬
‫‪ : Bottom‬اإلصاق العنرص عىل احلافة السفىل للـ‪. Form‬‬ ‫‪-‬‬
‫‪ : Left‬اإلصاق العنرص عىل احلافة اليرسى للـ‪. Form‬‬ ‫‪-‬‬
‫‪ : Right‬اإلصاق العنرص عىل احلافة الميىن للـ‪. Form‬‬ ‫‪-‬‬
‫وتشرتك يف هذه اخلاصية معظم عنارص التحمك ‪.‬‬
‫‪ -16‬اخلاصية ‪ : AllowDrop‬حتدد فامي اإذا اكن عنرص التحمك ميكن أأن يقبل معطيات يمت‬
‫اإفالهتا عليه أأم ل ‪ ..‬تس تقبل وتعيد قمية من ‪ Boolean‬اإما ‪ True‬حيهنا تسمح ا ألداة‬
‫ابإفالت معطيات علهيا أأو ‪ False‬حيهنا ل تسمح ابإفالت معطيات علهيا ‪ ..‬وتوجد هذه‬
‫اخلاصية يف بعض عنارص التحمك واليت حتوي معطيات بأأنواعها ‪...‬‬
‫‪ -17‬اخلاصية ‪ : BackgroundImage‬تعين الصورة اخللفية ل ألداة ‪ ..‬تس تقبل وتعيد قمية من‬
‫نوع الصنف ‪ Image‬واذلي ميتكل طريقة ‪ FromFile‬واليت حتدد مسار وإامس وإامتداد‬
‫الصورة املطلوب جعلها صورة خلفية ل ألداة ‪ ..‬وتشرتك يف هذه اخلاصية معظم عنارص‬
‫التحمك واليت ميكن وضع خلفية صورة لها ‪.‬‬
‫‪ -18‬اخلاصية ‪ : RightToLeft‬حتدد فامي اإذا اكنت حماذاة عنرص التحمك قد اإنعكست ليقبل‬
‫اخلطوط من الميني لليسار حبيث يتناسب مع الواهجات العربية ‪ ..‬تس تقبل وتعيد قمية من‬
‫نوع ‪ RightToLeft‬وحتمتل عدة قمي اكلتايل ‪:‬‬
‫‪ : Yes‬حماذاة النص من الميني اإىل اليسار ‪.‬‬ ‫‪-‬‬
‫‪ : No‬تبقى حماذاة النص من اليسار اإىل الميني وهو الإفرتايض ‪.‬‬ ‫‪-‬‬
‫‪ : Inherit‬وتس تخدم يف حاةل الوراثة ‪.‬‬ ‫‪-‬‬
‫‪ -19‬اخلاصية ‪ : TabStop‬حتدد ما اإذا اكن املس تخدم يس تطيع الوصول اإىل عنرص التحمك‬
‫ابس تخدام املفتاح ‪ .. Tab‬تس تقبل وتعيد قمية من نوع ‪ Boolean‬يف حال اكنت ‪ True‬يمت‬
‫السامح ابلإنتقال اإىل ا ألداة بواسطة املفتاح ‪ Tab‬أأو ‪ False‬يمت تعطيل الإنتقال ابملفتاح‬
‫‪. Tab‬‬

‫‪84‬‬
‫‪ -21‬اخلاصية ‪ : Bottom‬متثل املسافة بني أأسفل عنرص التحمك ومقة املنطقة اليت حتتويه ‪..‬‬
‫تس تقبل وتعيد قمية من نوع ‪ .. int‬وتشرتك يف هذه اخلاصية معظم عنارص التحمك ‪.‬‬
‫‪ -21‬اخلاصية ‪ : Top‬متثل الإحداثية العلوية لعنرص التحمك ‪ ..‬تس تقبل وتعيد قمية من نوع ‪int‬‬
‫‪ ..‬وتشرتك يف هذه اخلاصية معظم عنارص التحمك ‪.‬‬
‫‪ -22‬اخلاصية ‪ : Left‬متثل الإحداثية ا ألفقية للحافة اليرسى لعنرص التحمك مقاسة بوحدة‬
‫الـ‪ .. Pixel‬تس تقبل وتعيد قمية من نوع ‪ .. int‬وتشرتك يف هذه اخلاصية معظم عنارص‬
‫التحمك ‪.‬‬
‫‪ -23‬اخلاصية ‪ : Right‬متثل املسافة بني احلافة الميىن العليا لعنرص التحمك واحلافة اليرسى حملتويه‬
‫‪ ..‬تس تقبل وتعيد قمية من نوع ‪ .. int‬وتشرتك يف هذه اخلاصية معظم عنارص التحمك ‪.‬‬
‫‪ //‬مالحظة ‪ :‬توجد خصائص أأخرى مشرتكة بني معظم أأو بعض عنارص التحمك سيمت‬
‫الك عىل حده يف الفصول القادمة ‪...‬‬‫تناولها مضن س ياق رشح ا ألدوات ً‬

‫‪85‬‬
‫الفصل العارش‬
‫مربع النص ‪& TextBox‬‬
‫مربع النص ذو التنس يق الغين ‪& RichTextBox‬‬
‫مربع النص ذو القناع ‪& MaskedTextBox‬‬
‫امللصقات (عنارص التسمية) ‪& Label‬‬
‫عنارص ا إلرتباط ‪LinkLabel‬‬

‫‪86‬‬
87

You might also like