Professional Documents
Culture Documents
الفصل ا ألول
مقدمة يف لغة &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وغريها من التطبيقات الربجمية الهامة .
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
-تظهر انفذة خيارات التثبيت توجد ثالثة خيارات اكلتايل :
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اكلتايل :
9
= : Getting Startedويضم مواضيع عن جديد اللغة يف هذا الإصدار ومواضيع أأخرى .
= : Visual Studio Developer Newsوحيتوي معلومات حول تطوير اللغة . online
برانجمك ا ألول بلغة : Visual C#.Net
-اإنقر عىل ا ألمر Create Projectتظهر انفذة (New Projectمرشوع جديد) اكلتايل :
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;
}
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
جتمعات البياانت يف : .NETويه جتمعات بياانت جاهزة توفرها بيئة الـ .NETيمت اإنشاء اكئن مهنا
لإس تخداهما عرب طرق وخصائص خاصة هبا ولإس تخداهما جيب كتابة هذه امجلةل يف قسم الترصحيات
أأعىل الربانمج using System.Collections; :ويه اكلتايل :
: ArrayList -ويه مصفوفة ليس لها حدود ويمت اإنشاء اكئن مهنا كام ييل :
;)(ArrayList list = newArrayList
: Stack -يعمل معل املكدس خبوارزمية LIFOويمت اإنشاء اكئن منه اكلتايل :
;)(Stack s = newStack
: Queue -يعمل معل الطابور خبوارزمية FIFOويمت اإنشاء اكئن منه اكلتايل :
;)(Queue q = newQueue
: Hashtable -جدول التجزئة وهو بنية بياانت تس تخدم اكئن ًا مكفتاح فريد ويمت اإنشاء اكئن منه
;)(Hashtable mybills = newHashtable
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يه بيئة تطوير برجميات تساعد يف تصممي وكتابة وترمجة وتنقيح وحىت
حزم براجمك وتتكون من مجموعة من ا ألرشطة و القوامئ والنوافذ...تساعد املربمج عىل اإجناز تطبيقاته
بلك سهوةل ويرس وبشلك مريئ ...
( 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حيتوي عىل أأيقوانت اإختصار ل ألوامر من قوامئ خمتلفة يمت
الوصول اإلهيا بسهوةل وبرسعة أأكرث من ا ألوامر املوجودة فيالقوامئ ..لحظ يف الصورة أأدانه :
:زر تنفيذ املرشوع . :للتنقل بني نوافذ املرشوع املفتوحة اإىل اخللف .
:نوع املعاجل . :قامئة منسدةل تتبع . 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
MDI child Form -3الامنذج ا ألبناء تظهر غالب ًا داخل الـ MDI Parentابلشلك :
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
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;
إاس متتع.. مث تنقل بني الصور ابلنقر عىل ا ألزرار.. مق بتنفيذ الربانمج-
42
تطبيق : 5مصم برانجم ًا جيعل الـ Formشفاف حبيث ميكننا رؤية النوافذ واجملدلات والعنارص املوجودة خلفه
سو ًاء يف سطح املكتب أأو أأي انفذة أأخرى ؟
-مق ابإنشاء Projectجديد ابإمس .. P5تظهر انفذة الـ .. Formأأضف أأداة زر الـ Buttonاإلهيا
واجعل خاصية الـ Textهل ابلقمية "اإجعل الـمنوذج شفاف " ..يصبح الـ Formابلشلك :
-مق بتنفيذ الربانمج ..اإضغط عىل الزر (اإجعل المنوذج شفاف) ..لحظ رؤية ا ألش ياء املوجودة
خلف المنوذج ..
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كام يف الصورة :
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();
}
(عودة) نكتب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مرات ولحظ ماذا حيدث ...
-مق ابإضافة أأداة MenuStripاإىل الـ Form1من صندوق ا ألدوات يظهر رشيط قوامئ أأعىل
الـ .. Form1لإضافة بنود رئيس ية (قوامئ) يف مربع النص " " Type Hereاإكتب File
لحظ ظهور مربع " " Type Hereأأسفل الـ Fileوجبانبه أأيض ًا من أأجل القامئة التالية ...
47
-أأضف بند جديد يف القامئة Fileابإمس Newيف مربع النص Type Hereأأسفل الـ... File
-مضن القامئة Fileمق ابإنشاء بند جديد ابإمس Arrangeو أأضف اإلهيا بنود فرعية أأربعة اكلتايل :
TileVertical - TileHorizental–Cascade - Icon
-عُد اإىل زمن التصممي والربجمة ..اإنقر عىل البند الفرعي 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يظهر ابلشلك :
-س نقوم الآن ابلربجمة يف الـ 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اس متتع
51
{
;)(f.Show
;)this.AddOwnedForm(f
}
//الطريقة AddOwnedFormجتعل الـ Formاملوجود يف البارامرت للطريقة مملوك للـForm
احلايل .
-مق بتنفيذ الربانمج ..اإنقر عىل الزر " أأظهر المنوذج اململوك" تظهر الـ .. Form2مق بتصغري
الـ Form1عىل رشيط املهام لحظ تصغري الـ Form2معه ..مق ابإعادة الـ Form1اإىل وضعه
السابق عىل الشاشة لحظ عودة الـ Form2معه ...
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#مق ابلنقر عىل الزر " إازاةل مربع النص" ..لحظ إازالته ...كام يف الصورة
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كام يف الصورة :
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
مصم برانجم ًا يقوم ابإنشاء زر 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وميثل عنوان الرساةل ويكتب أأيض ًا داخل عالميت تنصيص مزدوجة " "
ويظهر عنوان الرساةل يف رشيط عنوان صندوق الرساةل يف ا ألعىل .
: MessageBoxIcon icon -4ومتثل أأيقونة الرساةل وتعترب شلك أأيقونة الرساةل دال عىل نوعها
وتظهر ا أليقونة جبانب نص الرساةل وتوجد ا أليقونة عىل عدة أأشاكل اكلتايل :
: Asterisk -أأيقونة تعرض حرف iمضن دائرة زرقاء اللون .
64
: Errorأأيقونة تعرض حرف xابللون ا ألبيض يف دائرة محراء اللون . -
: Exclamationأأيقونة تعرض اإشارة تعجب مضن مثلث أأصفر اللون . -
: Handأأيقونة تعرض حرف xابللون ا ألبيض يف دائرة محراء اللون . -
: Informationأأيقونة تعرض حرف iمضن دائرة زرقاء اللون . -
: Noneبدون أأية أأيقونة . -
: Questionأأيقونة تعرض اإشارة اإس تفهام يف دائرة . -
: Stopأأيقونة تعرض حرف xابللون ا ألبيض يف دائرة محراء اللون . -
: Warningأأيقونة تعرض اإشارة تعجب مضن مثلث أأصفر اللون . -
تنمتي نتيجة الطريقة 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يمت اخلروج من الربانمج .
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 مق ابلنقر عىل زر الـ.. نفذ الربانمج-
71
{
button1.Text = "MouseEnter";
}
Button لحظ تغري عنوان الـ.. Button حرك مؤرش الفأأرة اإىل حدود زر الـ.. نفذ الربانمج-
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تظهر رساةل موقع الإحدايث كام يف الصورة :
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
}
-مق بتنفيذ الربانمج ..أأدخل أأرقام اإىل مربع النص ..لحظ أأنه يكتهبا ..مق ابإدخال حروف أأو رموز
..لحظ أأنه ل يكتهبا مبعىن أأنه يعطل مفاتيح تكل احلروف أأو الرموز ..كام يف الصورة :
-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
-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