خطوة بخطوة مع فيجوال بسيك دوت نت

605

Transcript of خطوة بخطوة مع فيجوال بسيك دوت نت

Page 1: خطوة بخطوة مع فيجوال بسيك دوت نت
Page 2: خطوة بخطوة مع فيجوال بسيك دوت نت

2

Page 3: خطوة بخطوة مع فيجوال بسيك دوت نت

3

Page 4: خطوة بخطوة مع فيجوال بسيك دوت نت

4

� �

Page 5: خطوة بخطوة مع فيجوال بسيك دوت نت

5

� ��:�א����ذ��� � .�����א �

����א���������������� ،���و"����!� �� א���0�1אن�א.'ل�א���,+*�()'&�%$א

.NET Framework� 2343� 53�)�7�7�� (��� 9� �א>�زא�: �א��د<����1ق 2343�@� �$�Aو�א�$�B�$"C�5D�Eل� ���!� ،��FD�G%وא� �אو H���Iא� ��Jא��KL�H'1����M����א��23 ������!+�א� �N�OPQو� ،:ND�E$R����S�0QH�T3�U�:��FV��: �W ��53���Hא]�Y!Zא ���Xوא�'Sو

�א�ول�\'.0 �א\�J'ل :�]���vb4arabل���'��X�� ��Y�4Fא� 0F���4א�� K^>�W وא_�� �.א �� �

�`�Q� �3��P �א �و�WS�aא �b�I� ،:ND�E$R�� �U��\א� �P �א H���Iא�U� ��Uא��'�Xא"$��Bل�د.�: א^��c����Qو�،:%��d�9��3א\�234و�:%��d��3��3�e�f��Q�'g!�،hא$N��\א�i�^א\��'����3و��H�`O�9�53א�Kj�kא�د$� א

�l�S%�5'אD��3م،�א�(� !�OSource Codes�(�'gא�:�א\��QH$Vא.V$�,(%�$א��53א�K�p��5Qא �o�Pو���n3���oא���7�7Lא�h9�L�53א�^P �$ع��Uא�H���Iא39^���א ��1q����r��gs��Q�tאQ�5وNO�QReal World Cases�t �وא

a7!�i�PO ��D�234F% �אم�א% ،�و���W���O�PQ�9א�v�T����^3א��g(��.� �� �

�OQ�1 و��b'VIאن�..��z�Fb��D�.�U..�}$�.���1'دא�53�zא �G�Vאن�:�"Vx'ص�א X��P،�!�7'ل�א�$�Aא��PLא�,�I��1.�� �NS�5PQ�_�"!�:�5אن��7'ل�א�P>��ND's'}��g1�� �� �������q"و��RFو�KM!אن�}$�א�G�V �53א

)�~ ��g%'3.NET�(�h�q� �,�..�WS�K&�Uא�א ��53��IאI�������q �C�� �NSن�'PQ�_אن���b'VI��5�$�!"�وF!�������3 �h�qא�h��N7��5Dم��Q9א�lWS�U��Q$Lא���bא�،�g�jو����g�����k���7��3���7�7��h�q ���4 )Java�،

.NET� ،COM� ،DirectX� ،WPF� ،LINQ(...א�WSو� ،���$��א�� �gN��� �F�!��g��,���4 �و��Pد�אن��P'ن� �h�qא ،�X��P �א �!WS�G��Pא ،:����3H� �3� �Rb�n�D�K� �د I�X��P ��3$73�n�D:–א z�N�−�G��� �D'F��n�D� $F�Dא�

��O����h�q���E$R��)C#،VB�،...א��(���N7ل��'��X����������53�5PF�� .NET�v�,7$م�Q�K��a7!א�WS�@� �،�q �53��^�]���QH$V\א�hא�OT �!א �

� �� H���I9�����1ن�אN\א� �א ���W%$א(وWS�53א (�X��P �N'אن�א�G��P �دون��$�53Visual Studio 2008�$Qא

� !�،�q� �$���#�Cאو�QBasic�2343'%$���$�א �'م����1V3א�:��2343א'��$7!�،)Y�4\א��T�3�5�(��NR�bوא����j�Dא����F�N�����B�"���43ل��.NET."� �

� �

...تقديم

Page 6: خطوة بخطوة مع فيجوال بسيك دوت نت

6

���7N� ��א��3'אWS��1qQ.NET������K^3��.�O�3�0�sא�א �X��Pא��ز�א\'א�0�sא������9'%����WI]Q����53و�،�h����� �א $Dא'.Database Programming� ���ذج ،Windows FormsGQو� �و���� ،� .�G��P ������Kא �F�

�i$Q$א��h��N7� �����א�^�����3$ND����א�:�_��KS�`�Qא)�KF� ���53א���Hא�^ NET.وא �03�h�g&�tאb9$א�Hא

Framework�(���N7��K^3LINQ�h����� ��K^e�tوא WPF،�و��Data Entities���N7א\'%:� �����K3א\�7$م��03א�K7N� � ����.� �وא%�h�gא��9+$אم ��4 �Portable User Interfacesא���Kא �7دم� ��N7و�� ،WCF��!'��t �وא

��Dא\'ز�h�7��1�� ��'�9א�^��א���%���Distributed Applications� .�0�1��Qא�אن�$%�Hد�N و3�lWS'א�53�0�sא$��.,+*�د��X����U��gوא �

CU�]1I���P�Hن�א'P��$.�،אI��Q$7� �א ���א �X��P(�.�אWS�izא�U'Q�5 א W�Q�9��5Fو�53�cqQ�9%'ع�و

:O p3و(������_�D�KI$� ��ROV ��sC��3��OPQ��:��53و.���א ^3�YF���وא�����������5א�$�G�7��CאW �،.NET��53C�gو��0א�'א�.� �� ��−−�� �������א �

al-asiri.COM

Page 7: خطوة بخطوة مع فيجوال بسيك دوت نت

7

مقدمة اإلصدار الثاني– الكتاب مقدمة 9999 Visual Studio 2010عن 11111111 نبذة عن المؤلف 12121212 شكر وعرفان 13131313 هذا الكتاب 14141414 محتويات الكتاب 15151515 2008تحميل نسختك األولى من فيجوال ستوديو : 02الباب 29292929 net 2008. الجديد مع : 03الباب 35353535 الرئيسية net. مفاهيم بيئة : 04الباب 45454545 Visual Studio 2008 الواجهة األساسية لـ : 05الباب 63636363 الجزء األول net. مكونات اللغة الرئيسية في : 06الباب 73737373 الثانيالجزء net. مكونات اللغة الرئيسية في : 07الباب 97979797 OOP مقدمة إلى البرمجة كائنية التوجه : 08الباب 129129129129 الواجهات - Interfaces : 09 الباب 167167167167 األخطاء واقتناصها : 10الباب 183183183183 Collections التجميعات : 11الباب 197197197197 net 2008. البرمجة المتقدمة في : 12الباب 211211211211 System.IO اإلدخال واإلخراج تحت : 13الباب 277277277277 Windows Forms برمجة النوافذ : 14الباب 305305305305 +GDI : 15الباب 349349349349 Windows Presentation Foundation : 16الباب 361361361361 ADO.net قواعد البيانات باستخدام : 17الباب 411411411411 LINQ : 18الباب 477477477477 WWF : 19الباب 494949499999 WCF : 20الباب 505050509999 نقاط متقدمة : 21الباب 521521521521 ASP.net باستخدامتطوير المواقع : 22الباب 535353539999 خاتمة الكتاب ، وشكر 602602602602 المصادر 603603603603

موجز الكتاب

Page 8: خطوة بخطوة مع فيجوال بسيك دوت نت

8

Page 9: خطوة بخطوة مع فيجوال بسيك دوت نت

9

�Y�BC�:�Rbو�: ��n�Dو�$F)��N����،�Y���\وא�z�������،�وא ~�i Vوא ~� م��f�,C�n�Dא��� �.����א��א �"�5א ��%��3�9��Kg��9��g� �.�و�K�{���Cא�Lن��g��:�� g �א �

�$����3C�...אل�'`�!�A$�N3�n�D��g,C�����H$3א�n�D�h�Fوس�א��H$ �0 �������53א�F{�5D�iH��D�'S�X��P !Wgא�א

�h��N7ل��'��X��� �����.net 2008�4F����و�2008�،�����53א�$�i$Q،���אFr��gN3�z�g��9$�א��C�Uول���s�0אs�03و��g��F{�D�i$Q$%�h�!�5Fs��gم��'� �.���N3�X���S'�א �X��Pא W���Q$Q�Y��l${א �

� ��X����izא�.�$���hz�%�X��P �i�P!�Pro C# 2008 and the .NET 3.5 Platform� �oאpF� Andrew

Troelsen��+�N��*����3�KP ��Q���<א���q� ��� 3��� ��%�3�h$%و�����،�C#�،��!'و��PQ�3�53�i$Q$א����DدC�9���C�03��1و����C��DزCن�C�0�1��C�c�C�9������� ���0%�3 ���qא�KF����F.א���i�%'3�iH'V���G��C�

��������Hوא��VB�53�aو�#net�:��q���C.א �7Nط�א ��j�������Uل�אل�C�$Q�F� ���MSDN،�و��U��F�� ��0�1א�i$��n�Dل����K�.� �

� � !�،��3��17N � 3�,� �VO��${�5 ��}H�X��P ��C� ^3�c3��(�Nن����WS�U�����Q��3�K���3�KV!��Q�g��$���fא�א

��g�3�����7Qو���iא�دא�lWS���Nل��'��h�3'��\�53א�H$.�4�C�n�D�f��� �$�א�دوא�h،�و ���NP���0�1א]���g�'و���������KIدא���N���g!�: I�53�0�1��ن����f$gQ�X��P 1����h�7��Wg!�،�.net�Dא�א��H'1� ��FD�53د��^�C��

��O��+\א��q� �.دون�Cن����g��N���gOא $א����Iو���h��'P3�03��g�3������Oא �� �

��S�NF����t 1��������א\���S�Oא� ��Q'��:�F�7'م������FD����1��A�Iوא��iZO و�� �����53ذ ����`$���Yא�C� K�VR� ���F� �א ���1� ����(N �א ����� ���aא�X��P �א �WS�53א i$j�O �א 53� ��� 4� ...� Wא�h����Y�� $`��

�iqV 1���h�7א� ��53א�3^���وא� C�c3��(�N��9�5Pن�C.'ل� ��%��Xא��'אد�א\'%'دWS�U�iא�א D�X��P$د���i'1x�i'1I� ^3����1� �.WSא�א �

� ��C[ل�א��Cن�PQ'ن�WSא�א �O3�X��P$א�،�!����Fن�!�:�b�53'א�5F!�Xא��،�و����3ن�O��5F!�]1I�53���وא �1�Tن�،�

���Kوא�� �.�א�kد�����'א�zא �� �� �� �� �

مقدمة الكتاب

Page 10: خطوة بخطوة مع فيجوال بسيك دوت نت

10

� �� �� ��z�1Iد��53א�$D�v b����+�N �lWSא N�+��א ��S$S�T��tא�ن���Sא N�+��א ^�����Wkא�א �lWS�U��F.�،�X��Pא

�F���U��FS��3�Y��WS�A'א��A�IC�i�3�0�F`� �i'D$ א 3������t'%'د�U�iא N�+��א�و��،�و�H��Cא�����n�D�h�gא��z�1Iא\'%'د�U�iא �X��Pא �4D�X��Pא��Hل�אZ.9אN� �.�hوא �

� ���N���IوאC�U���]���+�N ،����Visual Studio 2010و�net framework 4.0.�،�وb�03$و�lWS��MQC2009�Hא

�:ND��Q$L�!��3א�����Vא�����C�9��،�i$Q$א��h��N7� ��ض�א��Q�gN و�Uא 'א.�U��P!C��N��0א!�אد�.����Uא3�X��P ���d�n7ج�Qو�،���W��hא�qدون����S��F���q� ����Nא���bא���hא������K(��� �5Pو�����ذ�،�K7��

��N7� ��������C����Dن���א�0%א\'א.�0 �� ع��n�Dא]���� �� �hא�$�i$Qو�����Oא �����g��D�K3،�و�Uא ��ROVא�$Q$,�H�V�I���i$Q$א��h��N7� �.Hوא��a\��!��א �Oو.��hوא �

� ��Q�gN ��gN3���Wא������7N��U���$D�����Qא N�+��א�و���א ��53�0�F��:%'3��PTو�Uא���*IC�،��^���Sو

�PT ��H��C�،�X��Pא�K3����F�Dو�'q ���7N��� �D���53��g$و��� ���Rs��MQC��KPא W�.$م��^Qن�Cא���'DدCو��Sد'g%�n�D.� �

� �� �� �� �

� �� �� �� �� �� �� �� �

مقدمة النسخة الثانية

Page 11: خطوة بخطوة مع فيجوال بسيك دوت نت

11

� �� �

��+���03.net framework 4.0��N�DC�t ��א�03�53אb$א��Hوא����gND��!'و��PQ�3Visual Studio 2010�����P\4א�23א �Microsoft Office 2010 �Y�4Fو����3א��k I�53�i���h �g����!'و��PQ�3��3$.�

��.�Windows 7و�1���h�7א�����Z،�و���Office�h�F،�א ��IDE�03�K3�P'אb�n�D�z��$�א��+$אم�אل� �� �

$bو�'!��א�PQ�37��53$م��i$Q$%�iHאWPF 4.0�'Qאل���'د'`�O ����7!�3�2010�03�ASP.net 4.0�����P3א�،�1���h�7אل���z�N�Silverlight�_�D�U�$Q$`� �\�Q$��2010�53و��NP>�،�:! Iא�9 ع��lWS�n�Dא\��3$7

�K�b�O� �:א �� �

رابط

http://www.vb4arab.com/vb/showthread.php?p=225389

� � ���q!���אH!�ق�b�n�D��3C��$�אC# 4.0���!�sא�hא�����N ��3$.�t ����0�1א�� ع���03א N�+��א�$�i$Q،�وא

��NS�t3�53$و���k�K�VO��n�D:� �� �

رابط

http://ahmedgamal-technical.blogspot.com/2009/09/c-40.html

� ����ل��N �23$א ���qא�$O�vb.net�i$Q@�א�����3��!�s9���،�F#��MQC�KF� �.��5Fsא���Hא �

� ��K3�P ���i$Q$�7ط�א�N ��א�� ع�WS�n�Dא�א �א��PQ�3�53�aو�'!��!�:���K�b�Oא�KM!C�،��Q�gN �:�Uא �

� � رابط

http://www.microsoft.com/visualstudio/en-us/products/2010/default.mspx

� �� �

� �� �

� �� �

2010فيجوال ستوديو

Page 12: خطوة بخطوة مع فيجوال بسيك دوت نت

12

.أحمد جمال خليفة عبدالعال

com.windowslive@Gamal-A: البريد اإللكتروني .00966545663382 – 0020108011792 : المحول

:السيرة الذاتية بالكامل تجدها هنا

doc.01256435433/3/uploaded/vb/com.arab4vb.www://http

مشرف عام منتديات فيجوال بيسك للعرب

com.arab4vb.www

مدونات شخصية وتقنية� �

com.blogspot.Space-AhmedGamal.www com.blogspot.Technical-AhmedGamal.www� �

www.AhmedGamal-NET.blogspot.com – English - � �

ملخصات سابقة� �

���������� �

� �� �

عن الكاتب

شكر وعرفان

Page 13: خطوة بخطوة مع فيجوال بسيك دوت نت

13

� �� �

�53�^P $�U�:Qא 'א.����Q'���Fj�.�0[,+�ص�Q��7R'ن�א�X��P �א WS�oאp3و� ��PTQ�9א����PTQ�9�53א �Nس�،�5PQ�_�X��P �����53�f$SCذ ���ن����W�CدوC��3ن�א�،��NS��Sz��Cد���Cن�C�� Wא�א����،�z�D$ א ^�z�Nوא

'�KM!�9א��C���Dو�9�� Wن��'P� ���sא\�'א�i�F^ و��Iא��� ����fوא�O��9د�z9pS�53�iא�,+�ص����hz�%�nא��  ���ذ�b�Iא��P,م�$.Cא�W א ���tא��Q$Q�Y���Sא�ن�،��� �������������Gא�b�):%'� )��'�����������Njא

�א����3�:�%'��U��H�net�(�U.�����א��I�53��J�,�KFD�H ل�(������:��P ��D_�א ���4،�زאد�������ن�k�:>$7���c!�,ن�C�� א�،� Wא�HC%'��53א��Cن��C'ن�W4א�א �n�D�C��g�!����1DC��F�P��X��Pذ^���F`��53�

�c3�:�.'�Q��F�!�:j�%H�G�IC�9C،�و����ذ���C�5&�5���$ND.

�� �NgF$س�MQCل�'b'3��PT א�����3���$F)�g{�U�:�9�73�53'א^��h$Oא��������WSא�א C��F��،�X��P%$د��

� ��g��`T��n�D�:�!�T3و�X��� �WS�U�X�����Q$7א�א¡�ل�،�ICא ���PTدא�A$�N3�iH!�`'אل�������*���W ����$א����gN3א����ذ�D���� ...�،�و��.��א��i'Iא �Pאم���Q$3�H$��$"Cא\'.�0وא���א

�� �53�KPא\Ng$س�MQC��PT ����g(�،�א\Ng$س��D�$"C�'אN �WS���7Nא�א F�،�X��P$�א�� ��g�$D��3�n�D�� �I��������X��P �א �X��P−��و���9אل�–!� N�¢�א�و���53א iz�7א ��g�.�53و� z�%�£Q�O�� �k� �P,C� ،� z�1I����

�iIא���+�N ��I��Kאج�א.�K��,�\א�lWS�¤Hא$��n�D���$D��3و��g�%'و�.

...شكر خاص جدا

�NgF$س�א� ��Iص�%$א �P,�G��1 YF1 ��'א $� �و ��$Ng\وא� �@�!\�a7���SH'����7N��U��g�$Dن��Dدل�،�

���FV��53א�z$��KPT (�'�h�Qא �X��P،�و ��5Pن�א �X��Pא W���א3�.�53��S��3�3C�l'א����Iא%:� �P'ن��Wgא�א�P א����FV��3א �P,�H��C�،�f q�������kوא39^���وא �N���،�وא���z�gא �h�ROVو�X'��Cא ��ض�وא^���k�H$.Cو��

�����ng�C�U�X��P '�I��$g%�53�lאج�WSא�אW�.

�،��NS�lذ��C���!�iא��W �� �53�KPא��D��U��gN3�h$O$אد�و����ج�WSא�א �X��P،�وא�c���I�_�HW�DאMQCم��D��PT א

�F�0و��1 �����S��،�tא�Hد�Uو�C��3�� ������א�U��gN3�h$O�53�0א���F���MQC��PT �0א���j�.$b �א��^�z�Nא��$FLא�� ����eم�WSא�א C��X��Pو�9و��Iא���n�D'!�7:�وא�D،�و.��Kذ�:��.� �

� �� �� �

شكر وعرفان

Page 14: خطوة بخطوة مع فيجوال بسيك دوت نت

14

� �� �−z4א23 �א�� 3��S h�3 D��QH�{ ��` و�K^3 Windows ،Office� �S א WS X��Pא �iH' Uא\W א

��g��Rb9.

−���F�� ���Hא���h�Q'�)�Gא\�د�iא�Iא���X��P� ��،���g��Q'�)�5Dل����3�pول��[���G��P �.C�9ن�א ��א��+$א3:�����ض�}�H��$ون�Cذن��53− �אو :�Qز'�� �אو :�D�����d�9و� ،�o pF� � �&'O)�X��P �7'ق�א�

�o p\א.� �−��gN3�$����gدא�KIא �X��P،�و WS�5Pא��0N>�9و%'د��C'אد��������Cو����Xא}��lوאQ�{א��'אد����G��C�

�a7!C#و�C�VB.netو���ZP Wא��[�'ن����$א� '�אQ���n�D���H�{�2j�������H$�א��،�.� �Q���[�'ن�−���7 '�و%$C���j 3���J1I�hو���Q�1 ����4 '�Hא����C�c�$�و�ON@�א+� �:�.� ���ل�−�K7N �����h���FDא iH�,א���e7'ل�وN3� �gN3� K�� ،�G��P ��oא]�� 53���� � iא\'%'د� �����א��'אد�وאC��sو�_�����א��R�Rb�iH'V��lH$V\�iH�,9و��K7��C�5D�HW��Q�o p\�!�� �.%'د��S،�و�03ذ �� �� �� �� �� �� �� �

� �� �

� �� �� �� �� �� �

هذا الكتاب

Page 15: خطوة بخطوة مع فيجوال بسيك دوت نت

15

� �� �

�_�D�h�����C�53��D'F��X��P �א �WS��MQ.netא ��D�4D$د��53א VO'ل�وא��'אnet 2008�X.�و�$Q$א WSא�،��S�%'3:� �

� �� ���Xא�ول ��h�Q'�)�5Dא �X��Pوא �gOس�و������G����5D�hא WS��X��P:א �3$73� :�'��53� �^�C�@� �X�� �א א���.�O�9وא.

�X�� �א��1 ق��D�U_��:א ^���א C$��� �NS.�net 2008אل�'`�O ���K�FR�+����53א�zא��� ����7Q'د¤�WSא�

��O��+\א�hאHא$bא��Y����.Z �.��'دQ'�و������������א�ول�و�����Oא �� �

�X�� �א�^ ��n�D�¤��ORא��1 ق��D�U_��:א�*V��X�� �WS�.net�5D�iWא�א��i�V���iH'V��� ����Q��د��،�� _�D� �א.��Rم iHو�M����N7�� �}H�t �א i$Q$א��h��N7� �@�net.א�X�� �א �!Wgא K�.� 53� ��43�5P��_� ��ذא ،�

�a7!�$Q$��9��אض�א��A'��� ��VV�.

���Xא �א��0 .�א ��j����و��S�b�NDא\+��net��O.��}$�وNS���J�����S�O\��Ob:א

���Xא��3@� ���4:א���z$� �����O���Xא ����NS�53���0�1א��1 ق������FV��Uא���،�����Q��ض� ��WSא�א

�_�D�Uא��1 ق����O������53وVisual Studio�����b���4א�� ����Jא��.

� �א ��دس X�� ��:א C$�N�� �NS�������C� iH'V�� :%'3� X�� �א �WSא ،� �g������ ��Oو��� �א������ �q� �א �b�NDאض������

�Y!ZRF� ��q� ��������Gא��]���W��a7!�'Sو�Yj$��F� .

�0��� ���Xא ����:א����3$7�3�iH'V��5P ���Xא �����و� �Hא�Fא���.

�53�^ ���Xא ����Nj�����4א �'%:�:א���I$3�'S�lWS�OOPP>��������Oو����g��Q'�)و�h�JO ��Nא ����n�D�fא

��k I�53�KF� .א

�0��� ���Xא .�و��gVj�VIوא��+$א�U��g��3א �Interfaces���4א 'א%�h�g:א

��,�� ���Xא ���K%C�53א.��Nص��U�¤z�1ICא P'د�و����g����3���Oو���gR�7N:א�X�� .�WSא�א

محتويات الكتاب

Page 16: خطوة بخطوة مع فيجوال بسيك دوت نت

16

� �TD�د�Lא�X�� ��VO:א���X�� �א �א\����U�iH�Pא��C�KCOLLECTIONS��N'אع�אل��Q��د�WSא �g��3وא��+$א���O��+\א.

��TD����^ ���Xא ��qא ���4و�D�U_�:א�U��3$7���^�C��b�ND�n�D�f����������،�i�\א�lWS��3$7�\���4א �א

.net.�

��TD�� �^ ���Xא .���ق�א�د�Iل�وא��Iאج�א\+����Oو�����Oא ����03�K3א\��h�O:א

� �TD� ���Xא �א�0 �:א �אل �����_�D�Uא��1 ق��WINDOWS FORMS�*j�Vوא�� �gQ'���t �وא�دوא�hא�:! Iو���� .وא

��TD�@3א���X�� �������D�U���Q_�א ��'���j�N��h��3א����د�I�53 ل�:אH�U�¤WI]Q�GDI.�+

��TDدس��� ���Xא ����N7:א��Qא$��WPF�N��h��3'�� ����V�+\א���O��+\א��gو��א���gدوא�Cو� ����א����د�و���j.

� �TD�0��� ���Xא �����I�53�h ل�:א �א $Dא'.� �����_�D�Uא��1 ق���NP>�X�� �א �WS�Uא �ADO.net��3و�

�h����� .�وQSQL Server�:! I����م�ذ ���53.'אD$�א

��TD�53�^ ���Xא �$�LINQ��NS��g��zא ����N7א�$�PQ�3�53�i$Qو�'!�� ��� م�:א .�<��NPא

��TD�0��� ���Xא �$א����N7��_�D�U:א���NS�WWF�0QH�T\א�iHو�'!��9دא�PQ�3�53�i$Q$א��.

���Xא ��Tون� 1���PQ�3�53�h�7و�'!���D�03��MQC�WCF_�:א� .�\���H�Tא 4א�23وא

� �وא ��Tون �א�Lد X�� �:א K�qT��� ������ �3�kא� 0�sא\'א� 53� �D'F���K�.� �O��+\א� i�g%9א� n�D�������

��� ���Xא .א1�9 ق��D�U_�א '�U�GQא

���Xא ^����وא ��Tون� 1���h�7وI�53����D�O��GQ ل�:א���Q'1��53�X�� �،�<WS��NPא�אIא��X�� �.�ASP.netא

� �

�0ON �...HC%'��53א��Cن�PQ'ن���g��Q'�)�����Uא �i$j�Oوא �� �� �� �

Page 17: خطوة بخطوة مع فيجوال بسيك دوت نت

17

� �p� ���'אل�T3'אH�WS�KFD�Uא�א Wg!�،�X��Pא�א Q�9�X��P��3�f$g���A'א%����WSא�א����N ���G�bא���Sאل�

���ن� �QC��Q�1 �وC�n�D���MQول�א ،�i�Sن�ز�����K��53�@��7Qن�Cول��d�'g!� ،��N��3��JO � �VV��@� �Y�3و�.3��'א¤� �

� ��4 �א������hא �}H�� ��s'א�و����X��P �![�'א�Xא 3��$zא��N�� �!�3���OP��!��!¦ذא �!Z)��N�� ' � �3C� ،� �

��3 '��Wg!��1�'�3��Nא�א P���X��P'ن����17א�1 ق�C�،���ON ��SH��§�t א�$�a7!�$Qوא��1 ق��Uא��'א�Xא�_�D�53وع��!�i$D�U�� �i$�%.net 2008.�� �

� �'VI��sא' Wא�C�'%HCن��K>�9א]�i�^��53�fZא ��PאHא�U�hא C�،�X��Pو��'���sא�����،�hא�������U��b

�i�\א��S�lWS���3ذא������C�،�: ����N ����3�S��Sא�Q�t <NP:�}�وز�א �7Nط�א�������وא $I'ل�!'Hא��Uא �7Nط�א��S�� ����N ��1 ق��D�U_�א �R!���4ول��h�Q'�)�53��J�,�h'O��9Cא �X��P،�א VO'ل�א�و������ א�و��

�� �.��Cس����z�,�K�$�ذ �� �

������א��'א�Xא P���t'ن��53��s'���g!�،��7��� �cFgQ%$א�Cن���h�Q'�)�n�D�0�1א �U�X��Pא ��ROVא� �MQא�fZRFو��C�،�¨$��F��� ��Sوز�{�KMO\א�.�אW ��g�!��(N '����N}�وز�hא ��ROVא ���C��7ن����$�א� M!

�A�IC�i�3.� �� �� �� �� �� �� �� �� �� �� �� �� �� �

لمن هذا الكتاب

Page 18: خطوة بخطوة مع فيجوال بسيك دوت نت

18

� �� �� �

����g�C�.�t ���q�–��gא �������K��Uא �G�Pא��Cو�C�–�K^3�Uو�،��BZ ��D�03��D'��$%C��N$م�א �א����03.�א�izא�H$.�� ��و�W �وWSא�S'�א���'�Xא ،��Q���<א���q� ������b9א��F�P �lWSא��N��h9�Lא!�KMא�� ع��n�Dא

�X��P �.א\���1ع�א��WS�5Fs�:%�gא�א �� �

Fא��K^3�،��Jو���$���9�h�BZ �NS�tF�P¤�����א��BZ��Hא�P� ��Loopsو��KConditionsא �����Tو���h�7א� �אل oQ���� K^3� �J��� $��� 9� �gNP �و iد'%� K.C� �$و�� �}H� h�B��� ¤�NS� ،Class� :�C� n�D�)�J!� �אل�) oQ��و�

Interface� �g�C�n�D�)�g%وא� �ل�) Q$��q�\א� ،Variableذ������ iد�� ���`$��Uא � �Lא� lWS�U� ،� �وWPSאZ ��K^3��B����3Cא ،�i�3�K��U��S�5ذ��D� Q$��i$�وI !:�!���)�א��...�א\�T$א�h،�א\�i�3��B)�h�3$gوא

���7� ������$���3و�����א���N3�:�QCH��3�a7!��3$+א���،��g����g3$+و_�א����g����gא���.� �� �

3�C�U��k����bא���F�P ���Q�_�����D��F���${�5ذ���א���¦�����K��n�Dو�n�Dد��F�D9ول�א���9��MQC�،ن��P�G��C��B���n�D�X��P ���U�tB.�א�n�R!�،��I�����D�X����izא �Q�9��(R'%$�א��'ع��53א�O�9ق���Yא

���4 3��'���!C�5D� Mن����U�E$Rא��Oق��h�R�1V3��B���5Dא'P �.�h�R�1V3א �� �� �� �� �� �� �� �� �� �� �� �� �� �� �

التعريب

Page 19: خطوة بخطوة مع فيجوال بسيك دوت نت

19

� � 29292929 2008وال ستوديو تحميل نسختك األولى من فيج : 02الباب

Visual Studio 2008 31313131النسخة الكاملة من . 1 Visual Studio 2008 32323232النسخ المجانية من . 2 VS 2008 33333333 إلى VS 2005ترقية مشروعك الذي يعمل على . 3

net 2008 35353535.الجديد مع : 03الباب SilverLight 37373737تقنية . 1 LINQ 38383838تقنية . 2 WPF 39393939قنية ت. 3 Expression 41414141مجموعة . 4 WCF 42424242تقنية . 5 6 .Code Refactoring 43434343

45454545 الرئيسيةnet.مفاهيم بيئة : 04الباب net. 47474747.لغات . 1 48484848 .العناصر األساسية في دوت نت . 2 3 .Base Class Library 49494949 4. .net Assemblies 50505050 5 .CIL 50505050 6 .Metadata 52525252 7 .Mainfest 52525252 8 .Common Type System 53535353

8.1 .CTS Members 54545454 8.2 .CTS Data Types 55555555

9 .Common Language Specification 56565656 10 .Common Language Runtime 56565656 Object Browser 58585858استخدام . 11 Name Space 58585858مجاالت األسماء . 12 59595959 استيراد مجاالت األسماء. 12.1 ildasm 60606060استخدام برنامج . 13 Open Source .net 60606060هل تبحث عن . 14

Visual Studio 2008 63636363الواجهة األساسية لـ : 05الباب 65656565 كيف أكتب الكود ؟. 1

VS 2008 Command Prompt 65656565استخدام . 1.1 Textpad 66666666استخدام . 1.2

1.3 .Notepad++ 68686868 1.4 .SharpDevelop 68686868 Viusal Studio 2008 69696969البداية مع . 2

الفهرس

Page 20: خطوة بخطوة مع فيجوال بسيك دوت نت

20

71717171 برنامجك األول. 1.2 73737373 الجزء األولnet.مكونات اللغة الرئيسية في : 06الباب

Console 75757575خصائص . 1 75757575 تعريف المتغيرات. 2

77777777 أنواع المتغيرات. 2.1 Constants 77777777الثوابت . 2.2 Read Only Dield 79797979القيم للقراءة فقط . 2.3 String 80808080المتغيرات النصية . 3

80808080 الخصائص والدوال الرئيسية. 3.1 81818181 تقسيم النصوص. 3.2 81818181 دمج النصوص. 3.3 81818181 مقارنة النصوص. 3.4 3.5 .Escape Characters -82828282 ط سي شارب فق 82828282 التحويل من وإلى النصوص. 3.6 3.7 .StringBuilder 83838383

85858585 التعامل مع التاريخ والوقت. 4 86868686 التحويل بين المتغيرات المختلفة. 5 5.1 .Widening Conversions 86868686 5.2 .Narrowing Converstions 87878787 5.3 .Cast 87878787 5.4 .Convert.To 88888888 89898989 مل الشرطية في دوت نتالج. 6

89898989 أساسيات الشروط. 6.1 90909090 دمج الشروط. 6.2 6.3 .AndAlso 91919191 6.4 .OrElse 92929292 switch 93939393استخدام . 6.5

94949494 الحلقات التكرارية. 7 7.1 .For - Next Loop 94949494 7.2 .While Loop 95959595 7.3 .For Each Loop 96969696 97979797 الجزء الثانى-. netمكونات اللغة الرئيسية فى : 07اب الب 99999999 لنفهم برنامجنا األول. 1 Function 103103103103الدوال . 2 Methods 104104104104الطرق . 3 out 104104104104الوظيفة . 4 byval 106106106106 واإلرسال بالقيمة byrefاإلرسال بالمرجع . 5

Page 21: خطوة بخطوة مع فيجوال بسيك دوت نت

21

107107107107 المصفوفات. 6 Arrays 107107107107صفوفات ماهى الم. 1.6 108108108108 تكوين المصفوفات. 2.6 109109109109 المصفوفات متعددة األبعاد. 3.6 110110110110 عمل مصفوفة من المصفوفات. 4.6 111111111111 إرسال وإستقبال المصفوفات من وإلى الدوال. 5.6 112112112112 خصائص المصفوفات الرئيسية. 6.6

Enumeration 112112112112الـ . 7 Structure 114114114114اكيب التر. 8

Struct 116116116116إنشاء الدوال داخل الـ . 8.1 Reference 118118118118 واألنواع Valueاألنواع . 9 120120120120 المقارنات. 10 11 .Nullable Types 125125125125

Nullable 126126126126خصائص الـ . 11.1 127127127127 المعامل ؟؟. 11.2

OOP 129129129129جه مقدمة إلى البرمجة كائنية التو: 08الباب Classes 131131131131مقدمة إلى الفئات . 1

Constructors 134134134134المشيدات . 1.1 Destructor 135135135135المهدمات . 2.1

2 .this 135135135135 Static 137137137137التعرف على . 3

3.1 .Static Class 140140140140 OverLoading 141141141141إعادة تحميل . 4 Access Modifier 141414144444معرفات الوصول . 5 OOP 145145145145العناصر األساسية فى . 6

6.1 .Encapsulation 145145145145 6.2 .Inheritance 145145145145 6.3 .Ploymorphoism 146146146146

7 .Encapsulation 147147147147 Private 148148148148 للوصول إلى متغيرات Publicإستخدام دوال . 7.1 Conctructor 150150150150إرسال القيم كجزء من الـ . 7.2 Type Property 152152152152إستخدام الـ . 7.3 Inheritance 154154154154الوراثة . 8

is-a 155155155155تعريف عالقة . 8.1 sealed - NotInheritable 157157157157الكلمة المحجوزة . 8.2 157157157157 الوراثة المتعددة. 8.3 158158158158 التعديل فى الكالس المشتق. 8.4

Page 22: خطوة بخطوة مع فيجوال بسيك دوت نت

22

has-a 158158158158عالقة من نوع ال. 8.5 Casting 159159159159التحويالت . 8.6 is 161161161161الكلمة المحجوزة . 8.7 8.8 .Visual Studio Class Diagram 161161161161

Polymoriphism 162162162162الـ . 9 Abstract 164164164164الـ . 10

10.1 .Abstract method 165165165165 161616167777 الواجهات- Interfaces : 09الباب

Interface 169169169169تعريف الـ . 1 2 .Names Clashes 171171171171 3 .IEnumerable interface 174174174174 4 .ICloneable interface 197197197197 5 .IComparable interface 180180180180

183183183183 األخطاء واقتناصها: 10الباب Syntax Errors 185185185185األخطاء النحوية .1 Logical Errors 185185185185األخطاء المنطقية . 2 System.Exception 186186186186الفئة . 3 Throwing Exceptions 189189189189 -رمى االستثناءات . 4 Catching exceptions 190190190190 -اقتناص األخطاء . 5

Finally 192192192192استخدام . 5.1 break 193193193193استخدام . 5.2 TargetSite 193193193193استخدام . 5.3 HelpLink 193193193193دام استخ. 5.4

194194194194 عمل أخطاء خاصة. 6 Collectiona 197197197197التجميعات : 11الباب

System.Collections 201201201201 فى Interfacesالـ . 1 System.Collections 203203203203الفئات فى . 2

2.1 .ArrayList 203203203203 2.2 .HashTable 206206206206 3.2.Queue 206206206206 4.2 .Stack 208208208208

net 2008 . 211211211211البرمجة المتقدمة فى : 12الباب Generics 213213213213الـ . 1

1.1 .Structure and Class Generics 215215215215 2.1 .Generic Collection 216216216216 Where T 218218218218استخدام . 3.1

Delegates 219219219219الـ . 2

Page 23: خطوة بخطوة مع فيجوال بسيك دوت نت

23

Delegates 221221221221تعريف الـ . 2.1 Events 223223223223ألحداث ا. 2.2 C 225225225225# فقط فى - Anonymous Methodsالـ . 3 226226226226 استنتاج نوع المتغيرات. 4 Extension Methods 227227227227الدوال الممتدة . 5 6 .Automatic Properties 228228228228 Lambda Expressions 229229229229تعبيرات المدا . 7 Object Initializer Syntax 232232232232صيغ إنشاء الكائنات . 8 Anonymous Types 235235235235األنواع المجهولة . 9 10 .Partial Methods 237237237237 11 .Gerbage Collector 238238238238

GC 238238238238الفئة . 11.1 12 .Operator Overloading 240240240240 Pointers 243243243243المؤشرات . 13 14 .Query Expressions 247247247247 15 .Preprocessor Directives 250250250250

15.1 .region , #endregion# 250250250250 15.2 .if , #elif , #else , #endif # 252252252252 15.3 .define , #undef# 253253253253

16 .XML Commenting 255255255255 17 .net assemblies. 259259259259

namespace 259259259259الـ . 17.1 Default Namespace 261261261261تغيير الـ . 17.2 Format of a .net Assembly 261261261261شكل ملف األسمبلى . 17.3 17.4 .Private Assemblies 262262262262 17.5 .Shared Assemblies 263263263263

Multithreading 264264264264المسارات المتعددة . 18 264264264264 مقدمة . 18.1 Synchronization 265265265265الجوريزمات التزامن . 18.2 18.3 .System.Threading.Thread 265265265265 Priority 270270270270األولوية . 18.4 18.5 .ParameterizedThreadStart 271271271271 18.6 .Foreground and Background 272272272272 18.7 .Threads Synchronization 272272272272 18.8 .ThreadPool 273273273273 18.9 .BackgroundWorker 274274274274

System.IO 277277277277اإلدخال واإلخراج فى : 13الباب

Page 24: خطوة بخطوة مع فيجوال بسيك دوت نت

24

System.IO 278278278278الفئات األساسية فى . 1 Directory 278278278278 و DirectoryInfoالفوراق بين . 2 DirectoryInfo 279279279279الفئة . 3 Directory 284284284284التعامل مع الفئة . 4 DriveInfo 284284284284التعامل مع الفئة . 5 FileInfo 285285285285التعامل مع . 6

Open 287287287287إنشاء وفتح الملفات باستخدام . 6.1 OpenWrite 289289289289 و OpenReadفتح وإنشاء الملفات باستخدام . 6.2 OpenText 289289289289فتح الملفات باستخدام . 6.3 AppendText 289289289289 و CreateTextالفتح بإستخدام . 6.4

File 289289289289التعامل مع الفئة . 7 8.Stream 291291291291

FileStream 292292292292الفئة . 8.1 293293293293 التعامل مع الفئات المشتقة. 8.2 8.3 .StreamWriter, StreamReader 294294294294 8.4 .StringWriter,StringReader 296296296296 8.5 .BinaryWriter,BinaryReader 297297297297

9 .FileSystemWatcher 298298298298 10 .Object Serialization 301301301301

Serialization 301301301301التعامل مع الـ . 10.1 10.2 .XmlSerializaer 303303303303

Windows Forms 305305305305برمجة النوافذ : 14الباب 307307307307 مقدمة. 1 307307307307 بالكود Windows Formsبناء . 2

310310310310 إضافة أدوات بالكود . 2.1 311311311311 إضافة القوائم. 2.2

Visual Studio .net 315315315315إنشاء فورم عن طريق . 3 Windows.Forms 320320320320مجال األسماء . 4 Windows.Forms 320320320320الفئات الرئيسية لعناصر . 4.1

Form 321321321321خصائص الفئة . 4.2 Form 322322322322دوال الفئة . 4.3 Form 323323323323دوال الفئة . 4.4 Controls 323323323323الفئة . 5

Controls 324324324324خصائص الفئة . 5.1 Controls 325325325325أحداث الفئة . 5.2

System.Windows.Forms.Control 325325325325أدوات . 6 6.1 .Button 325325325325

Page 25: خطوة بخطوة مع فيجوال بسيك دوت نت

25

6.2 .CheckBox 326326326326 6.3 .RadioButton 326326326326 6.4 .ComboBox و ListBox 326326326326 6.5 .Textbox 327327327327 6.6 .Label 329329329329 6.7 .GroupBox و Panel 329329329329 6.8 .RichTextBox 329329329329 6.9.Timer 332332332332 6.10 .TreeView 333333333333 6.11.ProgressBar 343343343343 6.12 .TrackBar 343343343343 6.13 .DateTimePicker 343343343343

7 .Dialogs 335335335335 7.1 .MessageBox 336336336336 7.2 .Dialogs Controls 338338338338 7.3 .ColorDialog 338338338338 7.4 .FontDialog 341341341341 7.5 .Open And Save Dialogs 342342342342 7.6 .PrintDialog 345345345345 346346346346 أحداث الماوس. 8 347347347347 أحداث الكيبورد. 9

GDI+ 349349349349 : 15الباب GDI+ 351351351351مقدمة إلى . 1 System.Drawing 351351351351ء محتويات مجال األسما. 2 Graphics 352352352352الفئة . 3 4 .Pen 354354354354 5 .Bruch 355355355355 356356356356 رسم األشكال. 6 357357357357 رسم النصوص. 7

Windows Presentation Foundation 361361361361 : 16الباب 363363363363 مقدمات أساسية. 1

1.1 .WPF 363363363363 1.2 .XAML 363363363363 1.3 .Microsoft Expression 363363363363

WPF 364364364364أنواع تطبيقات . 2 WPF 365365365365محتويات ومكونات . 3 WPF 365365365365تطبيقك األول في عالم . 4

Page 26: خطوة بخطوة مع فيجوال بسيك دوت نت

26

367367367367 البدء من خالل فيجوال ستوديو. 5 WPF 372372372372أدوات . 6 Data Binding 375375375375ربط البيانات . 7 8 .WPF 2D 376376376376 WPF 382382382382الحركة باستخدام . 9 XAML 385385385385استخدام الحركة ب. 10 Styles 387387387387تعريف . 11

Style 387387387387تغيير طبيعة ال . 11.1 388388388388 من آخرStyleاشتقاق . 11.2 Triggers 389389389389 باستخدام Styleتصميم . 11.3

Tamplates 390390390390الـ . 12 13 .WPF 3D 391391391391 14 .XNA 398398398398 15 .Microsoft Expression Studio 399399399399 15.1 .Microsoft Expression Web 399399399399

15.2 .Microsoft Expression Design 400400400400 15.3 .Microsoft Expression Media 401401401401 15.4 .Microsoft Expression Encoder 402402402402 15.5 .Microsoft Expression Blend 403403403403

ADO.net 411411411411قواعد البيانات باستخدام : 17الباب ADO.net 413413413413البدء باستخدام . 1 ADO.net Data Provider 414414414414مكونات . 2

414414414414 المدعومة من قبل مايكروسوفتData Providersال . 1.2 Third-Party ADO.net Data التعامل مع مزودات خدمة أخرى 2.2

Providers 415415415415

System.Data 415415415415مكونات مجال األسماء . 3 Sql Server 421421421421البداية مع . 4

421421421421 إنشاء قاعدة البيانات. 4.1 4.2 .Sql Statements 429429429429 4.3 .Stored Procedures 439439439439 4.4 .SQL Injection 441441441441

443443443443 العالقات. 4.5 444444444444 الوضع المتصل. 5

ConnectionStringBuilder 444444444444التعامل مع . 5.1 Command 445445445445عامل مع الت. 5.2 Data Readers 449449449449التعامل مع . 5.3

6 .Data Access Layers 450450450450

Page 27: خطوة بخطوة مع فيجوال بسيك دوت نت

27

7 .Asynchronous Data Access 459459459459 8 .Transactions 461461461461 465465465465 الوضع المنفصل. 9

9.1 .DataSet 465465465465 9.2 .DataTable 467467467467 DataTable 467467467467انشاء . 9.3 DataColumn 468468468468لتعامل مع ا. 9.4 DataRow 470470470470التعامل مع . 9.5 DataTable 472472472472 لقراءة البيانات من DataTableReader استخدام 9.6

XML 473473473473 إلى Serializingعمل . 10 DataGrid 474474474474استخدام . 11 DataAdapter 476476476476استخدام . 12

LINQ 477477477477 : 18الباب 479479479479 .مقدمة . 1 LINQ 482482482482دوال . 2 3 .LINQ To DataSet 487487487487 4 .LINQ To XML 488488488488 5 .LINQ To SQL 490490490490 6 .SubmitChanges 494494494494 495495495495 من خالل الفيجوال ستوديوLINQ To SQLانشاء فئات . 7

WWF 499499499499 : 19الباب WF 501501501501مكونات وأساسيات . 1

WF 502502502502البدأ مع . 1.1 1.2. Sequential Workflow 502502502502 1.3 .State Machine Workflow 503503503503

WWF 504504504504تطبيق . 2 3 .WF Code Library 507507507507

WCF 509509509509 : 20الباب 1 .Web Service 511511511511

512512512512 خاصة بك من خالل دوت نتWeb Serviceعمل . 1.1 513513513513 علية خاصة بك في مشروعاتك الفWeb Serviceاستخدام . 1.2 514514514514 استخدام خدمات اإلنترنت الجاهزة. 1.3

WCF 517517517517مقدمة إلى . 2 WCF 517517517517البداية مع . 2.1 Address 518518518518شكل ومحتويات ال . 2.2

521521521521 نقاط متقدمة : 21الباب Debug 523523523523التنقيح . 1

Page 28: خطوة بخطوة مع فيجوال بسيك دوت نت

28

526526526526 تجهيز البرنامج للتوزيع. 2 3 .VB.net vs C# 528528528528 Mono 533533533533مقدمة إلى . 4 535535535535 برمجة األجهزة الكفية من خالل دوت نت. 5

ASP.net 539539539539تطوير المواقع باستخدام : 22الباب 541541541541 مقدمة إلى تطوير المواقع. 1 ASP.net 548548548548مقدمة إلى . 2 System.Web.UI.Page 553553553553الفئة . 3

3.1 .Request 554554554554 3.2 .Response 557557557557

ASP.net 558558558558أدوات . 4 558558558558 الخصائص األساسية ألدوات الويب. 4.1 5 .MasterPages 561561561561 6 .Sitemaps 564564564564 Validation Controls 567567567567أدوات التحقق . 7 8 .State Managment572572572572 لتخزين البيانات

8.1 .Control State 572572572572 8.2 .ViewState 574574574574 8.3. Session 574574574574 8.4 .Cookies 575575575575 8.5 .Application 578578578578 8.6 .Cache 579579579579 8.7 .Global.asax 580580580580

9 .ASP.net582582582582 وقواعد البيانات 9.1 .DataGrid 585585585585

10 .WAP 591591591591 WAP 591591591591ما هي ال . 10.1 10.2 .WML 592592592592 10.3 .WAP + ASP.net 593593593593

11 .AJAX594594594594 اجاكس � �� �� �� �� �

Page 29: خطوة بخطوة مع فيجوال بسيك دوت نت

29

� �� �

� �� �� �

تحميل نسختك من فيجوال 2008 ستوديو

� �� �� �� �� �� �� �� �� �� �� �� �� �

الباب

2

Page 30: خطوة بخطوة مع فيجوال بسيك دوت نت

30

� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �

Page 31: خطوة بخطوة مع فيجوال بسيك دوت نت

31

2008Visual Studio الكاملة مننسخةال .1

¢��� i$D� $%'Q� 53� K�FR�� � ����3�Visual Studio 2008� ��PQ�3و�'!� 0.'3� n�D����3�P �א �+�N �א ،Professional Edition �� i$\����Q�{�iH'V��i3'%'د� �gNP ��3�����������iH'Vو��90��S${�،�a7!م�'Q�

�aא�� �:WS�n�Dא�א �� �

رابط http://msdn.microsoft.com/en-us/vs2008/products/cc268305.aspx

� ��o�3�KP,�n�Dن�'P��aא�� �Q�23�����'S��+$م� iso23����� ��Power ISO.*א N�+��א ���Q�t�WS�53��g��Fא�א

�.�Uא\��h�Oא ���Q�t���g��Fو��9$��53و%'د�א �7ص�א��ص��C DVD ��gو �i���[ CDو%'د �� �

23�����KQ�N���NP> Power ISO �NS�53 :� �� �

رابط

http://www.freedownloadscenter.com/Utilities/Backup_and_Copy_Utilities/PowerISO.html

� � �N�+��א �G�1���.�،���3�Pאل����.Z �:�'!��WS�53א�א �א��PQ�3�53��aو�product keyذא���U�G�����Nא �

� � رابط

http://msdn.microsoft.com/en-us/vs2008/products/cc263903.aspx

� H���I����.����53وAdd or Remove Programs� H���I����.و�Visual Studio 2008�.����53و� ،��H���I���Change/Remove...ل�אل����Iد����.product keyא��� �: ��H����!'و��PQ�3��3�.�W .� �

� �� �� �� �� �

Page 32: خطوة بخطوة مع فيجوال بسيك دوت نت

32

2008StudioVisual النسخ المجانية من .2� �

�aא�� ��n�Dא ���B��S${�،�5QH'1F� ��'ل�������� �MQא��!'�� ��PQ�3و�'!��، �S�!'��t �N�¢�א ���3�Pא��!�sא�� �� �:א �

� � رابط

http://www.microsoft.com/express/product/default.aspx

�و ���gNP�$�א�KLא��^���Professional Editionא.�U�Kא�53�h����P39א N�¢�א �lWSExpress���3�Pא N�¢�אل�����hو$ ����Uא �א��aא �����א��+$א�53��3.�H'13�K�א�� �:،�}$�א N�¢�א �

� ��+�N �א 23��4 א �

� �

��53אل� �+��.net 2008אل�� ������X'��]��Basic� �Q'1�� �J���n�D�.net

Framework� �7653517=linkid?/com.microsoft.go://http� �

� �

� �אل 53� �+��.net 2008� �אل ������ X'��]��C#� �Q'1�� �J��� n�D�.net

Framework� �7653518=linkid?/com.microsoft.go://http� �

� �

� ��53אل �+��.net 2008� �אل ������X'��]��C++�� �J���n�D�� �Q'1.net

Framework�O��+\א�h�7��1� �����+$م����9ج�א �7653520=linkid?/com.microsoft.go://http� �

� �

� �

� n�D� ��N�3� �Q'1�� �J��.net Framework�z�T�9� iH'1�3� hدوאC� � � �!'���3$7�3�GQو�h�7��1�� �

7653519=linkid?/com.microsoft.go://http� �� �

� �

���g��h������$Dא'.�z�T�9��������+���� ��!'Q�،�H'gT\א�h����� �)�م�.'אD$�א�net.א ������03�K3א����53 �

aspx.default/sql/express/com.microsoft.www://http� �

Page 33: خطوة بخطوة مع فيجوال بسيك دوت نت

33

� �

�$�Cدوא�PQ�3�hو�'!��א�$�i$Qא ��t��z�N�����FD�Kgאل�Cgadgets وאل��mash-ups� �aspx.default/popfly/express/com.microsoft.www://http� �

� �� �

2008VS إلى 2005VS الذي يعمل على ترقية مشروعك .3� �

������!��NP>.net 2005�n�D�KF��T3�53��+و��Dא\�I�53�c ل��.net 2008�:Vj�VI�53�iد�O�� �.

3����O���..net 2008א\�Tوع�I�53 ل� •���.Z ��3��©�א��g(و����i�,�.

• �H���I����.Next.�

• ��>$7 �א �+�N �א ªO�� ��'د W �א �א\�Pن H���I��� �.� ،� h�O�\א� 53� ��������א �+��� KFD� H���I��� �.�:�!�������� .א

• �H���I����.Finish.�

• �KF� .�����א��z�gא Z.���،�و����z�g��9����Q�7��n�D�KVR�$�א���z�gא

�!¦ن��T3وI�53�KF�Q��D ل� �(R� 2008�03���nא� ��9زאل��3'א!7� :NP ����2005وV� �*j�Vא��KQ$�� � ،�

����32008'א!�03��7�� :�!�a7.�����1'א�hא

• �53Solution Explorerوع��T\א�*j�VI�H���I����.��.

• �GQ'�� �.�53Compile�H���I����.�Option Infer����ONא

Advanced Compile Options�H���I����.�Target frameworkو�53 •���V� .net Framework

3.5�53�9$��..net Framework 2.0.�

�03� ��j�7���$%'��t �،��Uא��T3وع�.��{��!��א���Hא�hא 2008�tא�ن���P'ن�����Dא�s!������א\�א�0%א�.�و.�����s!��א\�א�0%א\��S$Q��References���'�1،�.�����7��9ل���� �

� �� �� �

Page 34: خطوة بخطوة مع فيجوال بسيك دوت نت

34

� �� �� �� �� � � �� �� �� �� �

� � � �� �� �� �� �� �� �

Page 35: خطوة بخطوة مع فيجوال بسيك دوت نت

35

net 2008. معالجديد � �� �� �� �� �

الباب

3

Page 36: خطوة بخطوة مع فيجوال بسيك دوت نت

36

� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �

Page 37: خطوة بخطوة مع فيجوال بسيك دوت نت

37

��S��17א�و��N �WS�UC��������7א�א���53�zא ���X��P���n�D���$Dא!Zאض���Y�3�S�Y�17،�א�z$� ����'د�א.net 2008א���� �X�� �א ��WS�U�E$R�Nא �א�و��، i�F� �234��_���C� ����^ �א �17N �א ،��h��N7� '.���5Dא

�U�h�g&�t ��net 2008�X.א�$�i$Qא ¤�Cن��WS�h�ROb�G�7א�אMQ�5�!א���س��U���43�5P��_�'�!�،��� �� ���Xא� �i�,��3���1N� .� �

� �� 03� h�g&�t �א i$Q$א�� �3�� �א h��N7� �א a7!�@� � X�� �א ��Wgא �א net 2008 �t.א\V7'د h��N7� �א K�� K��

��n7����Rא $��Dאbא�KFD�Hא���KIدא�K3�P .net Framework�U��SHو$���g��,������t ��a7!�h��N7��53وא9���3C�،��7א�$�D�U�$Q_�א ���4!�����א ����U�:��D�fدHوس�.�د��3���VON3وس�Hد.� �

� �

SliverLightتقنية .1

U�����j� '%����`��PQ�3�h������53�zو�'!��א �א������3(�و ���G��C���eא\�����Oא'NP� ���ل�א ����N7وא���N7������SilverLight�h���)�Hא���7א�i�D� �� 1���h�7א �RF��Flash�tو�� �K^3C�KR��GQ' ��D�n�Dش�א

.���+$م�א\�����Q$Fא\�C����Rو�א�F�D9د����n�Dق�א�د�Iل�وא�I9אج�

� ���,����Cن�C�$��� �}HوAdobe� ¤�[��P ��Flashא\� �1����−� �}H� �C��53و ،� �g��[� �S�Q'1ق������U

�H$Q�!−����,�hZ,א�WN3��QHW%�hא�q��$gTQ�_�W ��hC$��Adobe����U��gא ���Q'1א ���0Q]�¤�! ش�א����,�53�:.'7�MacroMedia�����T ���b]!�،Adobe�n�D�$F����h���)�E א�ن���Action Script��kوC�،�

�'S��S�g,CوFlash���N7�����53و�Flex����N7א��ICوApollo����,���Iد��F�!�،�Sunل� I�53���!�N\א�aI�n�D�� �g`�N3JavaFX Scriptאل�� ��F�Q� �17N �א ��P'ن �}Hو� ،� �Q�gN �א U� �N�R�V3� U� GVN��� $��]� ��� �وWSא

SliverLight��.$ ��א�D�'Q$�!�K�qT� �:FD$ش�� O �$��h���)��.���5D�HD Video�_��F�Dא�n�D�t �وא��3�G��'����3−ل�,������gN3دI'ل�WSא�א¡�ل���$���و�n�D�−.�

���N7� ��:�z�%�SliverLightز3�iH�Q'.�0א �����5D�fא\��lWS�5D�$Qא �� �

رابط

http://www.microsoft.com/silverlight/default_ns.aspx

��K�FR����.��Qא$SliverLightع�'s'\א�aא�� ���`����א�h����P3و.$Hא�53�Get SliverLight�hא �S$���C$�� �،�SliverLight.�� �

Page 38: خطوة بخطوة مع فيجوال بسيك دوت نت

38

�KFD�23��4و :�،�و����53.����`����א\'.�A�IC�i�3�0،�وא���K�FR����.Setuph����P3���0�Fא���SliverLight��.و9��ªא �Oق�...� �� �

���وא�� ��:F����tSilverLight$�א�X�%���N7��n�D��MQא\'א.�0א �� �

iH'b� �א\'.�0 �

� �

-Page/.01/samples/net.silverlight://httphtml.default/Turn� �

� �

� �

magazine_silverlight/com.yeejie.www://http/� �� �

� �

LINQتقنية .2� �

�z�%א��9� م�����KQ'����N7� ���lWSא����������،�h����� ��PQ�3�53�i$Q$%���N7و�'!�����Uل�.'אD$�א�P ��א ����03�K3א�$אول�وא7L'ل�وא����Q��}���4 �53���4 ��qא 3��,�I�53�i ل� ��qא�iH'V��h�Nj.� �

� �lWSא��9� م����Bאض�Z!�5אP>�0Qل����^F� :�� �

SQL Server كودSelect companyname from customers�

� �7Q��� �א �����+$אم �SW�ON�� ��Q� ...U� �א��9� م 2���� ${� 5P �و ،� �N�N�Q� �3� �WSא @�

RS.Fields("FieldName")�7Q��� G��� ^3� ،� iz�7א �א ���NP>� �I�� �א��� م KF� � ،� �g�zא�.� 0�1���� ���KFD��NP>�،�$Q$%�53�iz�7א ���5 ��7Q�1א ��د�Loop��Qאj�P ��U��Rא ��7א�izو����53א��Qد�D :� �

Page 39: خطوة بخطوة مع فيجوال بسيك دوت نت

39

� � #C كود

do { Console.WriteLine( Rs.Fields(“CompanyName”)); } while(Rs.Read());

� � VB كود

Do While(Rs.Read()) Console.WriteLine (Rs.Fields("CompanyName"))

Loop

KP,�n�D��g�3�K3��� ��������Q�hא �������3C�،�hא�ن�!7'אD$�א �����03�K3.'אD$�א�� �v��\א�H���I9א�'Sא�WSن���

Clases��k Members و methods و functions��kو Operators �KIא�א��53��3دאWSض�ZON �،��g���b�I3��,�net i. אل .� �� �

#C كودvar queryResults = from cust in customers _ select cust.CompanyName

� � VB كود

Dim queryResults = From cust In customers _ Select cust.CompanyName

�03�K3��� ���������P3אbوא�ن�אqueryResults�����bא�t 3��,���gVj�VI��k�iو���k'7א��JO����g�zא�.����P3�K�VO� �����N7� 9����lWS�5Dא�X���U�f���N��،�i�,��3.

� �

WPFتقنية .3

�$g,�t �����SH'g&�Windows presentationא �H'Nو��Sא�H�V�Iل�WinFxوא�$�53�iא ��h��N7א�$�i$Qא

foundation��S�A�Iא���N7��n�D�$F����XAML� ���q��+$م� '�obא 'א%C���j�N��h�gو���Sא����د��و���� ��n����FD�z�Nא�� ،�n�DWPFل� I�53�.net 2008د�'��$� '����Q�XAML��MQא����P3���K(Q� �F�!،� �QH'!� iH'V��

Page 40: خطوة بخطوة مع فيجوال بسيك دوت نت

40

�X� ����P ���ن�HCدXAML�hא �א �KVOא �Y��K3�Pאل�. ��QXAML�h�ROb�U�E$dن���� �F��د�� �א �وא P'د�GQ' .א

�؟WPF\�ذא�א��+$אم�

4 �א �q � Y�� K3�P �א KVO �א �����+$אم ��FV� �א Yو�� ��XAML���FV� �א ���א23 53� �3��� H'g&� ��� �.�د�� $��'د�'��t �،�§�O��K�����X','�'!�n�D���������FV،�אو��n�D! ش�و��G�Pא P'د�XAML�Uא\�+��VVא

.net��FV� '����Nא����Fא�� �v��� �5P��_�t ���n�D،�א �@�WSא���Q�3��RNF$א��53א ���PRو.'�iא ����FVאVisual Studio�t �א i�Sא��� �א�Lم 53� �D'F�� $`��� �MQא� ،� ��FV� �א @� �و �א P'د �3$�� bא� �FV\א�

�23��4 .�����K�F{�n�D�¤$Dو����g(3�Yא

�K�FR����F.�$��]� �����]!��N�3������3��Nذא����،��Q�gN ��Kא..net 2008�K.9א�n�Dو�C�.net framework 3.5�،�

p3���]!� ��9���ج���� Wא �}H� ،� �Q$��7� �و��Yא 'א%�h�gא �gNق����O �א $S�,و� ،� �א�3^�� lWS�n�Dع� � �KS��3�'ل�'gO3�qא������ �و������7 ،� H'V �אو���ذج�א iא\'%'د�h�S'Q$�O ��K�Fא �a7!�23��4א���n�D�0א

�:�Bل�א 'א%����h�gא��$� �� �

iH'b� �א\'.�0 �

� �

/02/02/2007/archive/tims/com.msdn.blogs://httpaspx.com-fnac-6-applications-wpf-great � �

� �

/05/03/2007/archive/tims/com.msdn.blogs://httpaspx.central-roxio-12-applications-wpf-great � �

Page 41: خطوة بخطوة مع فيجوال بسيك دوت نت

41

/09/02/2007/archive/tims/com.msdn.blogs://httpaspx.notescraps-8-applications-wpf-great� �

� �� �

Expression مجموعة .4� �

�53�l����7Q'م�א\�������FVא 'א%�n�D��gא C�X','�'Oو�א O ش�אو���،���FV� N�$����א 'Hא����FD�U� ��.�zא9��0�17���7א �H'Vوو�U��g�sא ��ROV،�אو����������א9وא��3وא���Q�،���FV� I�53�h���L Flash ل��א�23א

�����4 �. א ����FD�Y���3��� V!��4א ����FVووWPSא�،�}$�...�وC���.'\��g�7�����53و� �

'Qא�ن�و���03'د� �3C Expression ���1���،�h�7��1� 9����%���FFV3�hא�l�Q'1��5D��!'و��PQ�3��N�Dא�� �א���ج 53� ��FV�� 23����� �������P3א��+$אم �א�ن ��bC������'د ������ج <�PQ�3 XAML ��NPو�'!��7Q'م3����7��,���NP>��F��،�iא I�53���4 ل��1��U�:3א��+$א Expression BLEND �MQC .� �

H$VQ MS Expression � ،�����jH�h�7��1��0�H�03אBLINDS������Lא�hא��p\وא�H'V �وא �Q$�F���\א��Q'1� �−�

�:���23��4! ش�T 1����א ^−,$Q$�א� �,$Q$�−وS'�3'%:�����9س��1���3$���h�7א 'NQ$وز��S���� Design'�،�א�X','�'O��:�T ���K%��'Sאل−א�^ �א ،� WEB �'Sو�،� ��%$א�D�A'��}���Z3'א.�0א�����FV����bא����

�ل H'1� �دMicrosoft FrontPage �D א K%א� 53� �%$א �3$7�3� h����P3��� 5P � XAML و AJAX وIא�،3�K3���� �*V������:! Iو�'Q$�O ��. Expression Media �0א\�$��Qوא �

'S� �gN��� i�g,� �א��^� ���1� ���Blinds ����L א c�� 0.'3� ��� ������� �Cو ��.'3� KQ'�� ��bא� ���

23��4� �����j� ��،���S�lWSא �T,��א'g� �: و��\��pא�hوI !:�א�3א���Q���Uא �

Page 42: خطوة بخطوة مع فيجوال بسيك دوت نت

42

� �� �

� i$\����Q�{��+���K�F���NP>21�� �Q'م ��N7� �3�53'.�0א ����.��PQ�3�0.'3�53–��3و�'!��א ����אو���lWS�n�D�f���N���Fא ��PQ�\� - .���N7و�'!� �PQ�3 Partenersو�'!����Tא�zא ��53���N7א�$�Aא �h���Tאل

'V��X��P �.�5Fs���VO3�iHدHوس�9�WS�U��7א�א �� �� �

WCF تقنية .5

��h�Pאو�T ��Sא�$�PQ�3�h��N7��Aو�'!��א�$�i$Qא �t§$م�א 4א�23א �U�KF���tو�0sא��Vل�،��'א�n�D�zא�:! Iو���وZP ��5��g!��FgM...���א�K^3�23א\��N`��و�h�3$Iא Q4$�א9Qز�g%�a�H�:�!���Q�23�����א�H�V�I���lW

. א �Wk��g%'3���N7א�א �qض

$�� Winsock ���אل���'`�!�U6�J!و� Sockets 03 .net �K%�53א�i$Q$%���N7����!'و��PQ�3��N �hz�%�،

�. Windows Communication Foundation و��Sא�H�V�Iل �h���FD WCFא�V�9ل����א�� �

D����1��KFD�0�1���������H�V�I��!�،���N7� ��53و�K�F �Server And Client��K3�P�3و�Iدم��3C\�ذא��lWSא�!!! I�53 ل�א.�i�TD�53�Kא��53�a7!��1א P'د �

� ��5D�KVO\א��N�Hد�U�،��7��� �.���gN���h��Hو����Y.��א ��1���f'��h��N7ق� ���C��g�C��F�WCF7Fع��53א ��h��N7א �

� �

Page 43: خطوة بخطوة مع فيجوال بسيك دوت نت

43

6. RefactoringCode

�$�Aא\��Fא�hא�$�i$Qא ��g��z�%�tאل� IDE �53א���D'F���S�H�V�I���i�PO �ص��� �O`'אل���'دQ'�،�א:�3�K3��� �. א '���Kjא\��N��n�D�i$D)���א P'د�و���K�gא �

�و03 ،� i$D��3�23א���KP,�n�D�234א �א lWS�K^3�!'�� ��Q� iد�� ��U .net 2008 �5FM3א �gN3� $����وאbC

��q�\�*j�VI�z�T�53א���!�s9א�lWS��NPe�،���sאZ!א�iH'V��KQ$�� א�h�J!�U�h،�אq�\�23$א �،�H��1زqM��j�3��g%א��'אWS�K��:! Iو�hאZ�3H�� ��Uא �h�JOوא�q� �. وא �

�.Refactor! for Visual Basic 2008 א�NS��MQ¤���אWS�K^3�A�IC�23א�א �K%��23��4!�`'אل����� �

� �aא�� �: א 3�23��4'%'د�WS�n�Dא�א �

� � رابط

http://msdn.microsoft.com/en-us/vbasic/bb693327.aspx

����א ��$�h Qא �������iW!���n�D��gO�MQ�tא P'د �iH'b�lWSو :� �

��b�I��MQو�'!��א�PQ�3��!'� Code Snippet �U���sאZ!א�iH'V���NFM3��S2008و���bא���lWS��NPe�،��5P>��Fj�.�53���'�1\א��Fg\א� H���I���� ����Qذ ،�$��وא ��$ون���������1 �N��3� ���F� �K3אج��'د���H�53אد

%$�i$Q،�و�� ��دWS�iא�א �53�23��4א%�K!�`'אل������و��`3�$^� � :��53א%����Kא ���g�!��Q$Rوא�s!��א�'אد�XH�, :� �

� � رابط

http://msdn2.microsoft.com/en-us/vbasic/bb973770.aspx

Page 44: خطوة بخطوة مع فيجوال بسيك دوت نت

44

23��4� �iH'b�lWSو :� �

� �

�n�D�KF���hאHא$bא�¤�NSن�]�� �אذ�� �و �@���Iא אI2005א�� �b�I� ��2008���b�I~�!��@�א�39 �gNP �و ،�a7!��03���sאZ!א��NFM3א�ن���R�bאVisual Studio 2008�.�� �

� �� �� �� �� �� �� �� �� �

� �

Page 45: خطوة بخطوة مع فيجوال بسيك دوت نت

45

� �� �� � � �� �� �� �� �� �� �� �� �

الرئيسيةnet. بيئةمفاهيم� �� �� �� �� �� �� �� �� �� �� �� � � �� �

الباب

4

Page 46: خطوة بخطوة مع فيجوال بسيك دوت نت

46

� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �

Page 47: خطوة بخطوة مع فيجوال بسيك دوت نت

47

.netلغات .1� �

4����9 .net ������h�q �i$D�:3$+��������.�H���3�5D�iH��D��S�K��،�i$��53...� ��qوא�H���\א�אWS�v������PQ�3�Kو�'!���'א ��א ��م�.2000��N� ��h�qو��U� �g. 1א�� i$D�.ن�'P� � H���\א� א �$�53�$Qא WS�h���Tא

��ON@�א\�א��Kو�9 ��3وHא �g�O���%Zو��،�:�O��H$V\د�א'P �א �kن�¦��h�q� ���4،��������lWS�0�B���Fא א�����V و 7N� Engine ���3���..�5P'م��� ����n�D�fא\�h��'Pא������9]�¤�א ���7Q���U�A'��o��§�...�qא

H���3��N���t ��n�D�f���N���א ��h�qא� �. .net .� �

�M��t �وא �g�ON���!'و��PQ�3� �SH$V��t ��$�א ��h�qא! C# � ،VB.net � ،J#.net�����!�sא� ، C++/CLI

אICو JScript.net ... �QH���3��D$��t ��'�'ل�و���NS .net n¤�א ��h�qא��A�Iא ،��O �P����K^3ل�ود

LISP.net� �D�N1bא��z��W 1����4���h�7א .� �

�J���n�D�KF���t ..��������Jא ��N��9 Linux f�، mono �QH���3��D$Q� ^3 .net �@PN��nאMQ��א�b$אHא�hא�J����3$������9�2א�N\7$���ن�א!��Q�gN �U�5Pא .net 'S C# �7�9�:� ���MN� � ، VB.net ��9אض�� �}H

��� �S$��� C$���7و�Q'�م��FMאن�א��n�N��9� ،�h�q� �f# �:��®�$.��D'F`F ���0א� �3� �3'Q��.H�X'��91���4א� ���N7�� .net .� �

�NS��gND�h �VO� �: ����U�0�1א ��Q�gNא�9 ع��KF��n�Dא ��h�qא �lWS��D$��tא\�����03��QH���א �

� � رابط

http://www.dotnetlanguages.net/DNL/Resources.aspx

�� �

اضافة

X����U:�� �Pro C# 2008 .NET 3.5 Platform -Exploring the .NET universe using curly brackets� �

� �h�q 'א �v�1Q� .netא ��G��P��¯�9و®���D�G:�،�\�ذא��WS�Kא�א �$د��53'R��3دאم��������Q�gN ��U����Bא

maneged code X�� : و®�WS�n�D�Gא�א ���¯ل���$�iא�

−� �X�����P ���KMOQ��gMא��'�Xא!�،��g�'�dو��g�4'ن��Q�t �����Y%$א� ���qא�Y�4\�53�$אQ$� ؛�אن�א

����א���Iא�X'��9א��^��.������ ��7אK^3�iz...�وא�.'אس� �KMOQ��F�! Syntex h�qא Visual Basic �n�N��9�،

Page 48: خطوة بخطوة مع فيجوال بسيك دوت نت

48

03�KF�� �Y�4\�0א�B�XW%�� ����<��NS .net ��4\�5Pא $و�Hא ��'��7Qو(�و C# و Basic و C++ و Fortran و Delphi �0�F`� ��!�sא�Kgא���gN����k�7א���K�®��3א�WSو�،�i$�א �����B�KF�����VN3وא

i$� . א\�Y�4���3)���وא

����<�5Pאن�}$��Uא ��Q�Oא 'א��4Q�Y�43�$'ن����H�T3א ��Q�Oא �−�،�i�3�$د�h�q���Y�43�$� 'א

���OQא�WS�،��q� ON@�א�Y�4\ن�א'PQאن��KMO\אن���ن��53א�$����Q�gN �h�qو���Qא�Iאج��2�N3وא�$��Uא�i$��Y�4\א�H���Iא�U�h���T א�א�3م�א^��hאH���I9א .

−� ����F���h�q� �U�i����h�qא ��h���Fא �����s�Q���א�¤�NS� ^F!�،��g3س���9+$א�N �7Nط�.'��1M��iא

������Lא�h���F� WPSא�����0�1...�وא\��د�K^3�h9א ��H'Oאن�،�א P'�'ل�����iא�U��MQא ����h 3א\� ���وא�J�������gM���03����B��g�$و��hא��F\א�lWS�53�iد�O��9א .net .

� �

. netاصر األساسية لبيئةالعن .2

����iא �23��4א\��net �J���n�D�$F. �7$م�iHدو�U��PR�������jH��b�ND�E ���g�����Y� .net �h��N7� ،��lWSאz��]א��H�V�Iא��k��3�Q�E ^ ��.�CLR, CTS and CLS : א �

��23��4،�و��Sא�H�V�Iل Runtime Layer אل �K^e CLRאل Common Language Runtime��:�Fg3�،

K � ����j� �وא\�h��'Pא ��Uא��'אع �PR� �א �S� � - net. א�����9 ���hوא $وאل�P\א−�U�hאq�\א� �`��و�،�אل �g�3�K3��� ����אH�V�Iא�hא��3ن�، threads א Wא���iو�7����א Wא���iوא ��!�sא�W�ON� ��Q$,�H�V�I$�"�وא

3��'�� net. א\�����א������9 C��BZوא�KPT� CLR �3אل'P �. و��g%�n�D��SW�ONز�א � �אCommon Type System X�lH�V�I אل ��Q�W ������hא\$CTS ��3'D وא ����03�K3א�'אع�א���*��

�J���5Fs�KF�� .net �U��3'D$\א�،�و�����Q�oא �����gN���K3و���gM���Y،��3�03א�i�Dو%'د�����א�9'אع��h�J��� 0�B .net Iא� �g�� $%'��t �و�Sوא iIא�� �3C� ،�A�ICو� �J���Y��h�! � Common Language

Specification��3� ����SH�V�Iא���Q�t ������hא ������7وא\$CLS ��3'D وא ����03�a7!�K3א�'אع�א����V����g!�J���hאHא$b�0א�B�53 .net�.�� �

�����0�1אن��7'ل�אن�א �23��4א\������FV+$אم � #C و�Wgא �وQ��+$م ^3U����a7! CLS �'Sא��'אع�א\��

��Qز'��@O��n�D�KF�� ��3�e��!�3'א .net n�D�KF� ،�א��3 '�H�I��%�Iج� mono א\�Linux l�F �53א%�Kא�. !��5FM��5אن�ON���SW�ON����Q@�א �K��U�iz�OPא��)��Fא\+��CLS��� CTS �O ��1ق�אل �

Page 49: خطوة بخطوة مع فيجوال بسيك دوت نت

49

3. LibraryBase Class

��N7���!'� .net ���f��Q��3�� Base Class Library �5D�iH��D�'Sو�،��J!Classوאل�$ �'�d��n�Dא�وא��3وא�J���U�����j� و���Qא ���3�K3�:�وON��:Vj�VI�03@�א net �،��7Q�1. �3'%'د���JOh�J���0�B�Uא net WS�،l. א

��MQאل�Classאل�،�h����� GUI ،�אل XML ،�אل�Threads �א ���b�Nא�K^3������9א ����03�K3א\��h�Oو.'אD$�א

�:! Iو�.�Kg�Cو�$�'3���4 ����K�%�Uא��'�Xא�P\א�lWS��S��و�� .�t ��C�03�K3�P��53א ��h�qא�K��.و�D$��.net.�� �

�: �PQ�3�53و�'!� �h�Q'�) BCLאل����WSא�א�$ول� �

� �

'�d� ،� ��Q��� �BZو� System h�7��1�� �Q'1� � :%���� �3� K�� n�D .net אل� n�D� �MQא� '�d� ،

Datatypes�������Lא�h���F�� ��ل�א���System ��S�z א��،���Q$,�H�V�I$�}$�אن..�وא $وאل�א������9���j� �. .��א �h�JOوא �t��'������n�D��gא �

� ��JO �א �ob' �א �

System.CodeDom� ��SW�ONא�9'אد�و������P���b�I� �System.Collections� �K^3د��53א�9'אع�$D�n�D�'�� Lists, Stacks .�� �System.Diagnostics� �Process وאل Counters وאل ��MQ Eventsאل� �

System.Globalization� �� 53� �O���� �(��n�D�������� K�qT��� ����Q����:! Iو���F��.9א�hאدא$D9وא�h�q� �. א �

System.IO� ���Q���5D�zא'��h����� ��Q��3�K�������ض�وא��7��ل�א���'��3'P �אو��W!�N3��Q���5Dא ،�hوא¡�$א�h�O�\א

��K^3 Serial Portאل �

Page 50: خطوة بخطوة مع فيجوال بسيك دوت نت

50

System.Resources� ��Resources �KFD אل�����Q�،�23��4 א �oV��tא�n�D�h�q� ���Kא\^�ل�1���3�h�7�$د�iא�� �

System.Text� ����03�K3א VN'ص��������Q��3�K�� �System.Text.RegularExpressions� �RegularExpressions א ����03�K3אل� �

� �

4. Net Assemblies.

��qא ���4وאل�������Fg3و��Q�gN 1���U Compiler h�7א��z�N� �:3$+����W ،�!¦ن�א P'د�R�Q'ل�net �U. א،�و���Qو�s9�� metadata �:�s!���������אل IL و�f��Q��3�'SאH�V�Iא intermediate language א ��Q�gNل

KP,�n�D�zא'��i�,��3�KF�� �K��.����� C dllو��o�3�U exe KP,�n�Dא� �

K ��3�Q7����ن���� IL ���� MSIL وאل MS �7� ���H�V�Iل C א�PQ�\�H�V�Iو�'!��،�א��3א�ن�!���Fא�s!��א

Common 53�9$� MS �7��� �. א �

�א �23��4وא��'אد�و��3,��:�،�א��3אل C MSILو�אل �K^> ILאل �g7'م��Q�t !�'�R�metadata �n�D א\�gم�א�אل �MQ�W �א :�O�� �����o�3א�9 ،��������U� �g�3$+א���t �وא �h�JOא �א��'אع 0�F��obو IL وאل

metadata�X� :Obو���Q metadata א� ��Q� ،� �MQC�!�s manifest �${�h9���¤�NS� ،� �D'F¡א�lWk� �MQאA'���Q$ PQ�5'ن��� �Lא�lWS�Uو�،������3��o�3�53��^�����1א���g�!������� manifest �U�a7!�$�وא

��� �$א��Qو�a�Hא\���gM���03�h�Oא �. وא�7Q��gN3�$'م����KFא �� �

CIL ال .5

�q���23��4 ZONض�WSא�א C# �X����53 Pro.CSharp 2008� �� �

#C كود// Calc.cs using System; namespace CalculatorExample { // This class contains the app's entry point. class Program { static void Main()

Page 51: خطوة بخطوة مع فيجوال بسيك دوت نت

51

{ Calc c = new Calc(); int ans = c.Add(10, 84); Console.WriteLine("10 + 84 is {0}.", ans); // Wait for user to press the Enter key before shutting down. Console.ReadLine(); } } // The C# calculator. class Calc { public int Add(int x, int y) { return x + y; } } }

� ���O���F.�' 1������K^3�G��N3א�9����א WS�5D�2��Nא�א P'د���Cאم�$+����ILDASM�P ���`$�א�� �: 'د�א �

كود.method public hidebysig instance int32 Add(int32 x,int32 y) cil managed { // Code size 9 (0x9) .maxstack 2 .locals init (int32 V_0) IL_0000: nop IL_0001: ldarg.1 IL_0002: ldarg.2 IL_0003: add IL_0004: stloc.0 IL_0005: br.s IL_0007 IL_0007: ldloc.0 IL_0008: ret } // end of method Calc::Add

���lWS�nא\�����،�_����Q��KQ'א P'د����Platform-Specific Instructions���� �� ،����Qذ ���Uא\�����א����� f��Q� �3� �I ل 53 Jitter و�)�م�� ��h����P39�G��N3א��gز �����'د 2��N �א �א P'د �BZ�� �7Q'م W وא

T� �. �K�qא W���D�KF�Q:�א 23��4א �

�:������P3א ����n�D�fא\�WS�5D�$Qא�א\'s'ع�WS�53א�א �א��PQ�3�53�aو�'!�� �

رابط http://msdn.microsoft.com/en-us/library/f7dy01k1(VS.80).aspx

Page 52: خطوة بخطوة مع فيجوال بسيك دوت نت

52

MetaDataـال .6

n�D3^�ل� MetaData ��:! Iو�h�g%ووא�h�J!د��53دوאل�و'P �:א ��t��+$م� '�h�Q'�)�K��obא �

� � كود

TypeDef #2 (02000003) ------------------------------------------------------- TypDefName: CalculatorExample.Calc (02000003) Flags : [NotPublic] [AutoLayout] [Class] [AnsiClass] [BeforeFieldInit] (00100001) Extends : 01000001 [TypeRef] System.Object Method #1 (06000003) ------------------------------------------------------- MethodName: Add (06000003) Flags : [Public] [HideBySig] [ReuseSlot] (00000086) RVA : 0x00002090 ImplFlags : [IL] [Managed] (00000000) CallCnvntn: [DEFAULT] hasThis ReturnType: I42 Arguments Argument #1: I4 Argument #2: I42 Parameters (1) ParamToken : (08000001) Name : x flags: [none] (00000000) (2) ParamToken : (08000002) Name : y flags: [none] (00000000)

� �א��7Qz'م �C�Uول�3^�ل�א ������'�obא P'د :����P�� �NF.�W �<��NPوא�����n�D�KFא ،� .net 7'م��� אن�n�D�و$� 3�� ���$�KQא'Qج�����5 ��}H�:�$7א��Dא�،��g�O��v�Tو���Rs�7ط�وאN ���9 ع�WS�n�Dא�א P'د�،�א���Gא

o�\א�אWS .

� �

Manifest ـال .7

�+���i$� '���ن��NS¤�א�^��WS�5353א�א\���a7!�oوא�n���23�����KP �Assembly File��o�\א�אWS�oVQ�، ��و%'د�א�^��WS�،�o�3�53א�3^�ل����U����j� �53����H.����+��א�9����و�o�3א�9����א�:�O�����א�9

��D'N �: ��n�D'د��lWS�53א �

Page 53: خطوة بخطوة مع فيجوال بسيك دوت نت

53

� �

� � كود

.assembly extern mscorlib { .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) .ver 2:0:0:0 } .assembly Calc { .hash algorithm 0x00008004 .ver 0:0:0:0 } .module Calc.exe .imagebase 0x00400000 .subsystem 0x00000003 .file alignment 512 .corflags 0x00000001

8. Common Type System

s'\א�אWS�U����N��n�D��V�+\ع�א'CTS�J���U��3'D$\א�9'אع�א�ob'��*���:א�� ���وذ����������

.net��Sא��'אع��lWS�،���� و����gM���03��g�3������Oא

- Class

- Interface

- Struct

- Enumeration

- Delegate

Iא�ن���N������Q��3�9אن���،�X��P �3��������53��Oא�U��gN3�K��oQ�����7Q���n�D�f���Nس�א��ص��H$ ل�א1��2343���D�h�7د��Q!��5���ج�\��!��א�^���i$j�!�53אل �K3������O���'S��N� CTSאل��Nذא����،��g�3 CTS ��3א

�z�N�!���R%'ن� ����net��n�D�f. �אو� �43Compiler�Q'1���J���5Fs�������q'�א�دوא�hאو�א 7Q�5QW'3'ن�� �n�D� Classא�j�V*�א������9،��[ذ����V���9�^3א

Page 54: خطوة بخطوة مع فيجوال بسيك دوت نت

54

�����f��Q� �3� ¤�NS Abstract Class אل� ، Abstract Class � ���ل−'�d�9��n�Dא��'د :�T �א $Q$,�

interface -���1'د����n�D�'�d�5 �$�U�zא��+$א3:�����א�:� ��Kא.�: ��5P>���r�$�ذ ���KFDوHא��������f��Q��\א�3^�ل�WS�،�$�� Abstract Class وא �

#C كودclass abst_class { int sum(int x,int y); string name; }

� � VB كود

Class abst_class Private Function sum(x As Integer, y As Integer) As Integer End Function Private name As String End Class

CTS وא�ن��5Fs�53%$ول�j�VI*�אل��F�!��g� ����Uא ���03�K3א ��R���tج���H�' CTS ���Q��3'P �Uא��Is the class abstract or concrete H ��`$�א����b.�א��ص����3^ �Iא�K� ��ن� $��R���، CTS �Qج�.

Class�7ط�N �. ��NSאن�§�l4א�lWS�K^}��MQא �� �

مالحظة يل كيفية عمل~ تقلق لو لم تتضح لديك مثل ھذه الخصائص ، في دروس قادمة سنشرح بالتفص

Class وانواعه وطرقة المختلفة . � �

1.8. bersCTS Mem

������NP>�، Members ��gN3�Kא�s!��א�D$د��53אل CTS ��$�אن�.�ob'���Fא��'אع�א\+��I�53��O لא�D�hد7L��Q'ل Members ،�אلq�3ن�'P�5אن��P> Fields �MQن�א'P�5אن��P>�،:�� �� �

constructor, finalizer, static constructor, nested type, operator, method, property, indexer, field, read-only field, constant, event

�����f��Q��3�:Q$ �z�MDא��lWS�53�$�C Public � ^3و��5P>�،��Q¯H�A$3אن�PQ'ن �K� ( visibility trait)وא

Page 55: خطوة بخطوة مع فيجوال بسيك دوت نت

55

�،���NS��N�N�Q��3אن�����fאن�א��..�Classא H�I�53�:�Q¯H�5P>���r��JOج� �Nو�H�5دFs��7�9�:��D�f���N�����U��gO�b'����Q�*j�Vא��lWS�K� CTS .� �

� �

8.2. DataTypes CTS

�DataTypes K א�n�D��MQאل �d CTS'�אل.�53��3'D$\א .net X����53א�א�$ول�WS�، Pro C# 2008

K ���s'��03 keywords h�q� .net ^ �: Eא������9א �� �

� �

1��234���D�h�7د�אن�����i$j�!����3'��\�fאلF���FgQ��3�K� CTS ��N� ��3�� N� .net'ع��53א\��!��א

�3C� ،� ����א א�����9`Dא�$.��N�� �i�POو����U�Gא ����n�D�fא\��5D�$Qذא CTS א�WS�53�z$� �!���NPFא ،aא�� �: א �

� � رابط

http://msdn2.microsoft.com/en-us/library/zcx1eb1e.aspx

� �

Page 56: خطوة بخطوة مع فيجوال بسيك دوت نت

56

9. Common Language Specification

��oVאL$�א�د��53�nא\��1���hא زCTS ��3 �53אل ��F� CLS �S subsetذ������Uא\'%��א �����،�אل�J������KF��� �q� �א lWS7'ل�אن� N���0�1א .net h�Q'�)���ن��¦!� ،� �I��nN�}و� ، CTS ������QH���Iא

h�q �����U��S${�5אن�P> .net Q'�)�53��D'F��،��Iא��U��S${�9وh� CTS U��g��F{�� CLS

�Jم���$+�����q �KP ��QH�� �P'ن�א% .net �Q'1�� .� �

��1V3א� ق����Qو CLS Rules م�$+�����q �KP ��g7���lWS�n�Dא �Tوط�א%9����QH،�و��gO�b'����Qو1��53�$��9�J�� .net �Q'1�� .

h�q� ����N �� C# و VB.net �t �53�iא�j�V*�א����D'F��¤�NS�،אل��gFMQ�9 CLS 3��!��אذא�����P3���،א�s!��אم��9\�א��F(�C�0�B�n�D��g�FD�i�Dא �I�53�K�qT ل��CLS ��ن�א P'د�א W����+$3�:3'%'د��5Fsאل

�� �� �:�n�DCCLSא���zא W��'د�'�d�9C��C�n�D�A'وא�53��3א P'د�א

كود[assembly: System.CLSCompliant(true)]

g3��Nع�אل�ذא��'s'}��F� CLS �NS�53�iz�7א �: <3��NP'א���bא �

� � رابط

http://msdn.microsoft.com/en-us/library/12a7a7h3.aspx

� �

10. Common Language RunTime

א��ص�����n�Dא��gز��net ��q. א\��'�h�3א\�1'��� ����KF'د�אل���F� CLR ��!����Mذ��������7��،�!¦ن�אل��1M3���¦!����2343!�`'אل�����Nא\^�ل�،��ذא���GQ�7� א �5D��(Nא ���qא ��������g���e�tא P'د�א����b،�و

'%'د msvbvm60.dll�' �O`'אل������و���دوא�hא ��j����،�א��3����FV\א��������KF�� ���n�D��Nא��gز�1��JVM ��7 �2343%�!��!¦������ج�����:��D�KF����W CLR �'S و�ON@�א ��7Q�1،�!¦ن�אل...��n�Dא��gز�א

�J�������FV\��7א��1��KF�� �:%����W ��$�א' �. �n�Dא�%�gز��'3��'�� net. א\��oא �

Page 57: خطوة بخطوة مع فيجوال بسيك دوت نت

57

���אل �D��O! .net_�אل�P3د�'%' אH�V�Iא mscoree.dll א\�CLR l�F ���ج��~ Microosft Common

Object Runtime Execution Engine ����P\א�lWS�������،���������z$��03و$��03א��Qא,��o�3�iHא�9�אل �אل 7Q CLR KF�� Load'م izو.�א� ����א�9 o�\ metadata KF�Q� ، Load K � �MQא Types��U

U�i�23��4א\'%'د א�7Q'م����BZאوא��3אIوא�،�H'F�\א CIL �� platform specific instructions ��F�7�� �NPF:�א ��g%�n�D�W�ONز¤������N7Oאل...�א��z$�Qא�Iא CLR 7���23��4'م�אل ����������W�ON،�وI ل��KFDא

CLR�K ����03�K3א �h�JOא������9�� .net U�iא\'%'د Base Class �������U��g3$+�����Nذא��� .� �

a1+\א�אWS���:�Q'��n���$�3��s'Q��Qא��������Kא P'د�PQ�53و� native lW�ON�����53د�و'� :� �

� �

�NS�53�z$� �: و�� ��د�i،��ذא��3�U�G�����N��!��א\���NP>�$Qא �� �

رابط

http://msdn2.microsoft.com/en-us/library/8bs2ecf4(VS.71).aspx

Page 58: خطوة بخطوة مع فيجوال بسيك دوت نت

58

Object Browser استخدام .11

�Fj�.�53 View ZIא Object Browser �� �� ��א �T,��א��g(���، :� �

��Visual Studio �h א\�'!��03�iאb$אHאI�53 Tool h ل��lWSאل�P\�0�1א����אض���!��א���� ،��O��+\אU�����j� ����7Q���،��gא��+$א3:�و��net �i�qV3�iW. وא �h�JOא�Q�t ،�و����0�1אن������P3�f:�و�h�O�3א�9����א

:�$j�!�5D .� �NP>� �gN3��5אD�h�3'��\�53�$אQ�\h���P3���� z'`� �א\'%'دMSDN �Fj�.�U�i ��א zא'� Help אو�� ،0.'3�U�i�,��3���Z�9א�n�D�iא\'%'د msdn.�� �

� �

Name Space مجاالت األسماء .12

א ��j����א ��S namespace���gN3���T��${�tאل System �،�����0�1אن�� �C�ªنא ���I�53�7 ل�א $Hوس� �. א��G��C name spaces A�Iאل

Page 59: خطوة بخطوة مع فيجوال بسيك دوت نت

59

¤�NS name space ����� �I� Microsoft K^3� h�JO �א 53� $Q$� �א �g��� ${

Microsoft.ManagementConsole��J!�53��7�T\א�h�JO ���Micosoft �03�K3 �و�0�Bא���a7!��b�I��S�. ��PQ�3�h�3$I �mono� ^3و�'!��و Wא�!�KF���9��g���אل �

���P'ن��53א 'א��sאن��O���אل ،� �7�9 name space � �� �א���g��'���System.Windows.Forms : אz�N� ��g%����t ��. �n�D Formsא\�gم�א ��j����א �

مجاالت األسماءاستيراد .12.1

��NP>אد �א���� ����ل�א�z��9א�o�3�n�Dא P'د�א��ص������ �KPTא �

� � #C كود

using System.Data.SqlClient;

� � VB كود

Imports System.Data.SqlClient

i�,��3�� �� ���Kא\^�ل�����אد���ل�א��F��z��9אو��������NPF�!�،��NRsא���3א��n�D��F.ذא�� :� ��� �

#C كودSqlConnection sql1=new SqlConnection();

� � VB كود

Dim sql1 as SqlConnection=New SqlConnection()

U�:OQ������7��_�' � ،�K��7\א�U�i�3�K��U�G��Z ��� : 'I$ � �1M3א���� � �Lא�lWS��O!� ،� z��9ل�א����g�!�:3$+��� :� �

#C كودSystem.Data.SqlClient.SqlConnection sql1=new System.Data.SqlClient.SqlConnection();

� �

Page 60: خطوة بخطوة مع فيجوال بسيك دوت نت

60

VB كودDim sql1 as System.Data.SqlClient.SqlConnection=New System.Data.SqlClient.SqlConnectionn()

� �� �

ildasm استخدام برنامج .13

03� �7R�\א� �א 4א23 5Fs Visual Studio 2008

23�����G �q ،�<WS��NPא�א �U�${ ildasm��23��4א��F.�23�����]א��ص�������53א�9 ع��n�Dא�9

CIL ،�א��Q¯H�53��NP>��MQאل �F�� .net:�����+$אم

3��4 �:�53�iא H'b�lWS�23��4...��2א��ص��Wgא�א �� �

� �� �� �

�23��4 و3��!��א\�ND�$Q:�و<��NP���K�F�+���53א��NS�53:� �

� � رابط

http://msdn.microsoft.com/en-us/library/aa730858.aspx

� �

؟ net . open sourceهل تبحث عن�.14

com.project-mono.www://http �����f��Q� �3�'Sو mono project אل��g,א�'S projects ������t אK CIL �O��+\א�@�'N� �h��Qز'��n�D�KF� �.א �

������Iوع���T3�¤�NS Portable.NET 5P> CIL ��h�VN3�n�D�KF� �. ���53�Oא �

Page 61: خطوة بخطوة مع فيجوال بسيك دوت نت

61

�NS����^ � : }$�Hא�1�� ��TFوع�א �

� � رابط

http://www.dotgnu.org

�5D��^�C�����VO��iH'V��f���N��X��P ��.C�UMONO%�א�z.�د�53��3א �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �

Page 62: خطوة بخطوة مع فيجوال بسيك دوت نت

62

� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �

Page 63: خطوة بخطوة مع فيجوال بسيك دوت نت

63

� �� �� �� �� �

� �� � � �� �� �� �� � � �� �

الواجهة األساسية للفيجوال ستوديو

� �� �� �� �� �� �� �

الباب

5

Page 64: خطوة بخطوة مع فيجوال بسيك دوت نت

64

� �

� �

� �

� �

Page 65: خطوة بخطوة مع فيجوال بسيك دوت نت

65

كيف اكتب الكود ؟ .1

�،��C�9ن��lWSא����%9 ����Visual Studio 2008���F�P3 א�%����א ��n�D��Q$��7א �pאل�א �����I�53��S ل�a7!ل�و%'د� I�53א�:�و��S��R�RV C�n�D� 3�e .net framewrok 3.5 development kit��،�!��%����א

h�7��1���Q'1��n�Dא�Hن�.�د'P�����¦!ز��g%�.net 2008��lWS�����n�D�� �`D�n�Dس�H$ ،��WS�U�f���Nא�א�'ل�א ��7Q�1א������9א I�53��g�3�K3���N��t ل��Q$R� �K7�Nאن���K�� Visual Studio 2008 א �1ق�. �

53��g��F���NP>���j$�3�aא�� �:�WSא�א �

رابط

http://msdn2.microsoft.com/en-us/library/zcx1eb1e.aspx

� �

Command Prompt 2008Visual Studio استخدام .1.1

'�א!��NsZא�7N���N'م����4 C# �3א��������: I�53��NP>�، csc -? �� ع��n�Dא�وא��3א\P���،���'�1'ن��$���BZ��z'د �،�����Rج� �Q$R$�אل #�lWS Cא�وא����3!��� ����0�1א �Qو$Q�z�,�K��KF� ��1M����5P �،

out��h�O�\وא�����،��Uא\���K��7����i��3�53�$�O'����7'م���Q�z�,�K��KF$و��Qو����Q��3�'Sא�....�وא�9z�� �53�23��4א� ����oא�������Q��3�K��U��PR�� ����Sذ��b�!�� .� �

� �

]��KFD��NP>�،�iH'b�a��Compile�o�3�9�cs�� �� �KPTא���:��G����:� �� �

Page 66: خطوة بخطوة مع فيجوال بسيك دوت نت

66

كودcsc File.cs

�o�3����:�Q'R� ��:Cdllو� �� �

كودcsc /target:library File.cs

C�o�3����:�Q'R� ��:exeو� �� �

كودcsc /out:My.exe File.cs

C�KF� א�ICompile�$� �$3�h�O�3�i'%'د���U�i$�وא�:� �� �

كودcsc /define:DEBUG /optimize /out:File2.exe *.cs

�zא��$א�$Q�\3��!��א��NP>�!'و��PQ�3�53�aא�� �: WS�53א�א �� �

رابط

http://msdn2.microsoft.com/en-us/library/78f4aasd(VS.80).aspx

� �

TextPad استخدام ال .1.2

�{��nNא ،� �J�g� �א iد�D9�K��.����1���+��� ،� z�,�]��KF�� �*�V+�� �K��.و� z�,�א�n�D�KF�� �K��.� :� ������qאو��h�RObو�53�iH'13 Notepad �GQאل�9��Q���iدא����g3א��+$א��NP>�،�KQ$�� ����Q'1وא�:���.

Z...�אو����nא������HTML אو��g3א��+$א��NP>���.אHאو�G��...�*j�Vא��KQ$���0�1�����3��3د�z�,�� . \�1'��א

Page 67: خطوة بخطوة مع فيجوال بسيك دوت نت

67

� �

TextPad �q وא�$j�VI�5Fs�53�i*�אل�oQ��� �o�3��!�s�0�1א��א���� C#אو� vb.net ��!�sא�$���،�:��D����}$���+����NP>�، Compile �53א�s!��אU��F�� visual studio��3א\�7Q�l$`���o'م����'�5Qא��'אد

�אل RE אل �q� � �� ... #C א\��+3$:�� �א aא�� �א 0���� �NP>� �א\'s'ع �WSא �'ل� $Q�\א� �!��\� ،� א�:N3وא1�9 ق� :� �

رابط

http://www.eggheadcafe.com/community/aspnet/2/10014016/textpad-and-c.aspx

��n�D��gא��Z �ob' �h�qא ���4אو�א�K��h�O�3�${�0�1אن������F��~ Textpad��NS��:� �

� � رابط

http://www.textpad.com/add-ons/cliplibs.html

�5D�hدHن�א���g�O����4 ��qא�U�KQ$�� �א ������P3����Qא�q��~ Reguler Expressions��0s'���F.�' �،�����n�D��SW�ON����D�1אل!���b�I���4 ���qא�Yא�'. �Textpad� �MQא .� �

Page 68: خطوة بخطوة مع فيجوال بسيك دوت نت

68

Notepad ++استخدام .1.3

9��،�K�������1�K ��!'���9��}H�t ������א�j�V*�א����Q�،�K3�P ���b�I�K^3אل Textpad �א�:��������

auto completeس��'د�H'� ���v��3�:א��nN�}�H$V\א�v'�O3�:א��� W �osא�، .

� �P>�NS�$Q�\3��!��א��N :� �� �

رابط

http://notepad-plus.sourceforge.net/uk/about.php

����א�:�l�Q'1��K��:� Open Source א O��23��4��3�03��NS�l${�:א �� �

رابط

http://sourceforge.net/projects/notepad-plus/

1.4. SharpDevelop

�����FVאC# �MQ 3'%:����3$אل��g%د�وא'%'����F�Q�،:�

Page 69: خطوة بخطوة مع فيجوال بسيك دوت نت

69

�hوא�دوא��g(\א�U�'Qאل���'د'`�O� �X�.9א�'Sو...�� �� ����4D�:��D�fא �א��aא���z$� �:�<��NPא �� �

رابط

http://www.icsharpcode.net/OpenSource/SD/

sual Studio Vi 2008البداية مع .2 ����>$� �S Viusal ��Studio'�אل VB.net אو�אل #C א\���PQ�3�53�$Fو�'!�� �����Pאل IDE אل�،�:�D'N�

Proffessional א N'ع��'Sא��3و�،����� Express�K^3������'g!��N��3��q� Visual وא W�PQ'ن�3'%:�

C# 2008 Express�.� �

i�3��23��4ول� Web Site �،�و���Gא ���qא\��+C�$`����3$ول�H��I�${��3א�hא��T3�z�Tوع�Cو��$���K�qTא

�Fj�.�53�،�5Qא\'%'د�n�D�KQ$��� ��!�sא�$Q$% New ZIא Project ^3 :

Page 70: خطوة بخطوة مع فيجوال بسيك دوت نت

70

� �

�Sא��'אع��a�א� Console Application n�D� ��j$��א P'د���'�3 ����P � �,�,��Sو Class �����$� وא

Mainوאل� name space �:�ZIא�W �3�Uא�����O����K.��א�9'אع���1�Nق�S�...�a7!�.��k'�א���א\�Tوع�אX��P :���: N��،� Console��+$م�53א I�53�0�1��א��'אع�و��a�א���J���K3����g! .net 2008 .�� �

����<��NPא ��h��'P3�Y��K7Nא\�Tوع�א\+���،��O��� �Y>�n�D Solution Explorerא �T,��}$�אل�،

GQ'�� Refernces �aqM �I�53 ل�א i$Q$%�h��'P3� �!�s�0�1א���� ،����������� �!�M\א�h��'P\א�${n�D Refernces�aqsא\�وس�א�<�5وא�H�� Add �.

�$�Y��KQא��'�Xא ��ض�،�����0�1א�D�H���Iض� �'��NP>�GQא� �D���Q���rض��0�Bאل�Class א�WS�KOא�א

Classes �g�!�*j�V�1ق�وא� �: א\'%'د�T3�U�iو��Dوא

Page 71: خطوة بخطوة مع فيجوال بسيك دوت نت

71

GQ'����� Properties ���� j�VI�$`���Y��3�:��D�aqM*�א\�Tوع�����F.�' }$�j�VI*�א\�Tوع�،��Dو�T\������9א�*j�Vא���NP> .� �

��אل����Q .net �MQא Class Designer ���H�5P>�����h�JO ��Classes�iH'Vא �FgN���h�. � �و�$Q$�א

i�,��3��,��03�iא �وא��n�D��FgN���aא\�Tوع�3��g7��1����Q����53و���j�3 .� �

� �

برنامجك األول .1.2

�U�،��Nאل�a����23אول������X�`N� function l�F�\א Main � �� �: �0sא P'د�א �

� �

#C كودConsole.Write("Hello World"); Console.ReadKey();

� � VB كود

Console.Write("Hello World") Console.ReadKey()

� �

�a7!�...�Uא�ول���������h]T�C�$.א�WPSن�'P�Visual Studio 2008.�� �� �

�Hز�n�D�aqM �.�و%��2����Xא �X�%F5�23��4א �� �� �

Page 72: خطوة بخطوة مع فيجوال بسيك دوت نت

72

� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �

Page 73: خطوة بخطوة مع فيجوال بسيك دوت نت

73

� �� �

� �� �� �� �� �� �� �� �� � � �� �

مكونات اللغة الرئيسية � �� �� �� �� �� �� �� �� �� �� �� �� �

الباب

6

Page 74: خطوة بخطوة مع فيجوال بسيك دوت نت

74

� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �

Page 75: خطوة بخطوة مع فيجوال بسيك دوت نت

75

��Kא�D�U�H�r9_�א\�h��'Pא������9 ��h�qא $وj�VI�����n�D��Q'��n�D�f���N��،����h*�אل�.Console��Nو�Hد�U��7�9��g3$+��N��t �.وא �

� �

Console خصائص .1

z�D$وא��� �دوאل KFDو� �,�T �א n�D� ����P �א �א�ن 0�1���� �א $Hوس�، 53� ����א\� lWS� n�����.� �وא�Z%�ع �S�J��� �����n�D�fא ���b�Nא������9�iV.���א Console ��g��D�KF���t و����lWS�$ND�،��g�Dא\������H�WI]Nא

�� �� .

�JO �: ��Sدوאل�א9د�Iل�وא�I9אج�،�وConsole �S א��Sא $وאل�א �t����gQ'א �

� � #C كود

Console.Write(string); // *������P . Console.WriteLine(string) // z�gא����$���$Q$%��1� �aqs�03�*������Pא�7��9ل� . string x=Console.ReadLine(); // Zא��aqs�03�iz�7א �7א�53�h I$3�izא\��+$م�و���Qא�53�z�g��9א int x=Console.ReadKey(); // Z���aqs�03�iz�7א ���fوא�$�!�a7و���Qא�����FD�z�gא�izא�. ConsoleKeyInfo r= Console.ReadKey(); // ���Qא�W � ^3��gא���Hز�K^3�z�,�ل�א�I�5אدP>�،�: �Iد��$���iz�7א ���fوא�$�!�a7وא�53�z�g��9א�izא�.��Iصq�3�U�2��N §��5Qא

� �� �

مالحظة . من آخر الجملة ; ـ فقط ازل الVB.netو كنت مبرمج ل

3� �א� 'אن h���F��� �b�I� A�IC� �א N*�و K^ ForeGroundColorدوאل �'ن �BackgroundColorن���'� �JO ����ConsoleColorא����،���O���Y����0�1א �'ن���Q���5Dא�� �KPTא�� :�� �

#C كودConsole.ForegroundColor = ConsoleColor.Yellow;

Page 76: خطوة بخطوة مع فيجوال بسيك دوت نت

76

K^3�A�IC�*j�VI�¤�NS WindowWidth و Title iW!�N ���g(3�$Q$Rא��g! Iو .� �

�� �� ZONض�א�Q����N$�א ��7م��1����Dא N*�א�،��D��1 �: �'د���3�$'א�0�sא �

:�א���q�\א name – �F� �:�אq�\א� Age�� �

� �� ����������Q���5Dא P'د�אW��7م�� �: <��NNPא �

#C كودConsole.Write("First Name: " + name + " - Age: " + age);

�MQא�KM!א�A�IC��7Q���¤�NS�� �� ��7Q�1א���،� :� �

#C كودConsole.Write("First Name: {0} - Age: {1}" ,name,age);

� �

KFD��NP>�،�����^ �N*�����+$אم�3H'ز Format �'א���1א ��7Q�1א d م�و�.H e K exponential �KPT �� ^3�� �� �: א �

#C كودConsole.WriteLine("E format: {0:E}", 99999);

� �حظةمال

. من آخر الجملة ; ـ الفلن تحتاج سوى ~زالة VB.netلو كنت مبرمج مجددا

تعريف المتغيرات .2

�� �� ��7Q�1א���hאq�\א�oQ�����NNP>��7��� �: ���Fذ������Uא $Hوس�א �

#C كودint x; string name;

� � VB كود

Dim x As Integer Dim name As String

Page 77: خطوة بخطوة مع فيجوال بسيك دوت نت

77

��ªو%'د�א �F�PوI !:�،�و ��$��]� ����NP new ؟��g�Fg3��S��F!�،�hאq�\א�oQ����53�^��U� ������+$אم �gOQ���� 5P>� �1��� �א �new �U ����א�9'אع iא\'%'د� ��sאZ!9א� �g�H'b���� �S$����� �3� 'Sو

��71N\א�9'אع�א�KQ'����Q�����،��gא��ص���±TN\א bool �� false �Obم�����.H9אع��وא'�C��.���� Wو�hאq�\א.

�������NP>�9�hא��+$א�����9���g3+$אم �NS�5P¤�א�'אع�א�53�A�Iא new אل�K^3 objects و arraylists

:N���U�:��D�f���N�����:! Iو .� � WSאUא�9'אع�����7��'S� C# :�� � � �

X����53�iH'V ProCSharp 2008 and .net 2008 platform א

Page 78: خطوة بخطوة مع فيجوال بسيك دوت نت

78

53��7�T\�0א�9'אع�א�B Object K^3������9א�:.���iHو�M �����e Equalsو� GetHashCode :! Iو .� �

K^3���F.� MinValue و j� MaxValue*�א�KFT�!K^3������9א�long V و ��3C intא �1ق�א������9 �'אع�א

�����א\$IsLetter h I و �d��F�! char K^3�*j�VI�n�D IsDigit'�אل�...��$Q$R� .� �� �

أنواع المتغيرات .2.1

23��4 ���Gא N'ع Class دא�KIאل �Uא�%��53�zא�hאq�\א�oQ�����NNP> int , string�$Q$����Q3^ �،�و

4Dل�'b' �. �א\�Pن�א\'%'د�!�:�א ����A$3oQא ���s'� � �17N �����ZONض�lWSאq�3gOQ���KIدא $א� ،�� �$�א 'b'ل�� �:��I�9 ل�C�0�1��Q�5 �q�\א� WSא� ���Pא�QHא $א �7���KIدא� '������OQ:�دא�KI,�ط�Cو� �و�O@�א��3 ،��NF.� ' � �3C� ،� � � �H�Iج�א $אq�3�oQ�����)�KIدא��JO 3��,�Classiא��(�:� ��Q�9�5PF�! nF�دא ��א 'b'ل���Lא�lWS�U�،�i�,��3�Member.�� �

D'���NQ$ �K^3�a��� א�h،�א N'ع�א�ول�وS'�אq�\ن��53א int و Long �53�:��P\�q�\א���א�TQ�����:! Iو

K^3�G��\��3אC�iא��W �����P3ن����N3�0�1:�אObject of Class �9 و Array אq�\א�T�!����iH�,ن��P3:�F�.iא��W �.�،��WS�n�D�f���Nא�א\'s'ع��� ��U�K�VOدHوس�.�د�U���3א �� �

Constantالثوابت .2.2 Wא Constant ~א� ،� �א�$א :�F�.��q��5P>�9�h����� ��'ع��53א 'S �����f��Q Constant �5P>� ،����^ �א אو

� �� �KPTא���:����� :

� � #C كود

public const int myNumber = 100;

� � VB كود

Public Const myNumber As Integer = 100

Page 79: خطوة بخطوة مع فيجوال بسيك دوت نت

79

����א\��د���Q K^3�h9א��+$אم � ������ �א ^'א������7 lWS PI=3.14���T �א :3$+����Y�3��.H�K^3� ،� �U�h����Lא��...�א�.q�F��:OQ����53�9$�����^��:OQ����KMOQ�� �Lא�lWS�U l�q��� �Rن�א���FM .��Uא�و.�

oQ������Q a7!�:OQ�����(L��F�7 �... א ^�����i�3وא�$�iوא�lz�1Dא �

Read Only Fieldالقيم للقراءة فقط .2.3

� �� �KPTא���:OQ������Q :

� �

#C كودpublic readonly double PI=3.14;

� � VB كود

Public ReadOnly PI As Double = 3.14 �

�،�D��3$א�א�:�����U�oא�����P3א�K^3�KF�Q Constant elz�1Dאل .����F�$�א��i�3�lz�Tوא�$�iدون�,�ط� �3�KPT ���oQ��� ��3^ א�lz�1Dא L�@O��U��F�7)��א�� ��: א �

#C كودclass MyMathClass { public readonly double PI; public MyMathClass () { PI = 3.14; }

� � VB كود

Class MyMathClass Public ReadOnly PI As Double Public Sub New() PI = 3.14 End Sub End Class

Page 80: خطوة بخطوة مع فيجوال بسيك دوت نت

80

Stringالمتغيرات النصية .3

�U�E$R�N���jא���lWSع'N �������Q��3�Kل��'�� String � �

String الخصائص والدوال االساسية لل .3.1

��bو�א��C�� �א $א �א���+$אم� �

Length� ��*N �$د��'ل�א �

Compare� �YV��Y����H�7F� � �

Contains� �*N ���5D��R*�אو����5Fs�fא� � �

EndsWith � �

StartsWith � �

Y�3�*אو���f�r��g�NQאو��C$�Q�*N �\��!��!���Fאذא���ن�א �

IndexOf � �

LastIndexOf � �

�$א��Qאو� \��!���P3ن�و%'د����fאو��$א�5Fs�Y�3�*���Qא N*�،��'א�53�zא53�Q�gN ��א �

Remove� �*N ��53�Y�3�z�%�fWא� �

Insert� �String �אدHאج��*�دא�KIאل� �

Replace� �*N �א���$אل�%��53�zא �

Split� ����3 D�K��03�*N ��OV3����Y�3�z�,�G'!��،�3^ ��7����א�*N −(7����א�(i$Q$%��!'OV3���� �

ToUpper � �

ToLower � �

Y��f�� ��א9���KQ'R� capital و small� �

Page 81: خطوة بخطوة مع فيجوال بسيك دوت نت

81

:النصوصتقسيم .3.2� �

�� ��7���s'Q�������NP>Split�z�N��*א��+$אم�א $א�� �7�����h�Q'�)א OV3�U��b�ND����*N'!��،�א\^�ل�א��h�3 D�n�D–�:1و��U�:� �

#C كودstring[] newarray = g.Split("-");

� � VB كود

Dim newarray As String() = g.Split("-")

: دمج النصوص .3.3

�23$א VN'ص�������S+$אم��a��9��7אQ�1 ��Concat �،�אو�����+$אم�א $א �+�א�� �KPTא�� :� �

#C كودstring s3 = String.Concat(s1, s2);

� � VB كود

Dim s3 As String = [String].Concat(s1, s2)

مقارنة النصوص .3.4

�K3��\�5א��+$אم�אP>�==Uص�'VN ،���9א�:��53א\�KMOא��+$אم�א $א � C�=U VB.netو� #���H�7\ Cא

Equals�� �� �KPTא�� :

� � #C كود

Console.WriteLine(s1.Equals(s2));

Page 82: خطوة بخطوة مع فيجوال بسيك دوت نت

82

� � VB كود

Console.WriteLine(s1.Equals(s2))

3.5. Escape Characters –سي شارب فقط

�f���${�،��� ���j�D�h�qא�K��U�/א��fو�Lא���� � �Q$%��1$�و K^3��b� /n(`'زא /t KF� Tab

^3�� �� �KPTא���،�l�: و� �

� � #C كود

Console.Write("My Name:/nAhmed Gamal");

� �

�G�Pאن���hدHא� ��ذא Wא� /�G�Pאن���� � $�� !� //�����f��Q� �3� �א��+$אم 'Sو� �I��K��¤�NS� ،Verbatim

Strings�$��د�D�*�� ������ � �Lא� lWS�U��NP>���� Escape Characters �KPT ون�א �53���7אل�� ^3�� �� : א

#C كودConsole.WriteLine(@"C:\MyApp\bin\Debug");

String التحويل من وإلى .3.6

� ��Parse ^3 ��'�3�)��א�9'אع�א�n�D������9א $א�� �KPTא���،�l�&�N3����*N : وא �t�'ل�א

� � #C كود

int x = int.Parse("1"); bool v = bool.Parse("True");

� � VB كود

Dim x As Integer = Integer.Parse("1") Dim v As Boolean = Boolean.Parse("True")

Page 83: خطوة بخطوة مع فيجوال بسيك دوت نت

83

� ����F� ToString ^3��'�א�n�D��MQא $א�� �KPTא���*������g�Q'R� � �

#C كودstring x = m.ToString();

� � VB كود

Dim x As String = m.ToString()

3.7. StringBuillder

�K3��\��9+$אم�א��N3ون�^P C & U VB.net �KPTو�א\��ND�+U C# K3$7���3'م���23$א VN'ص�،��Q`[�א���� �� �: �3^�ل�א�s!��א$�3אد�א Q4$�א� ZPو��−א �

#C كود// C#: Label1.Text = Text1.Text + "@hotmail.com";

� � VB كود

'VB.net: Label1.Text = Text1.Text + "@hotmail.com"

�Cن 9� Visual Studio �JO �א �23$א VN'ص�����+$אم�A�IC� �7Q��� �N ��3$. StringBuilderل�����U� ،zא��� System.Text.StringBuilder � �� �23$א VN'ص��� �KPTא��g3�5א��+$אP>�، :� �

� � #C كود

//C#: System.Text.StringBuilder mail = New System.Text.StringBuilder(Text1.Text); mail.Append("@hotmail.com");

� � VB كود

'VB.net: Dim mail As New System.Text.StringBuilder(Text1.Text) mail.Append("@hotmail.com")

Page 84: خطوة بخطوة مع فيجوال بسيك دوت نت

84

& Cو+�)��א��lz�T،�א��3א��+$אم�א\��stringbuilder L�WN3�'S��F��K(Q�h 3 א H�Oق���Yא�U�5FPQ�YN�9אن

KF�7'م��Q�'g! Object �53�$אلQ$% String 23د����FD�K��03 .� �

3��,�Loop X����53�i وא�ن��ZONض�3^�ل���H�7\א�H'VNص�،�و�'VN Net Gotachas. �7'م��D�23$$د��53א

�53� zد�23א��$א�h���FDد�$� � H���Iא�KF��� ����.�م� �و.�م�1000000و���h���FD��nد10�23، �د�23، ���FD� ^����� ���H�7} StringBuilderא�دא�Y��zא��+$אم���W�ON� אو�א��+$אم��h 3��3א �23$א ���Q$��7،��03ذ���ز�53א

�gN3�KP .

�N��93562.933�c���������59.4���nאن�Q�7���7�.د� ...� �

�23$א VN'ص�؟؟؟+�אو� & ��3�KSز �����+$م...�وא�ن�� �� �

�JO �א �!'� stringbuilder אل$��א�� h���FD� �MQא Replace אجHوאد Insert fW�وRemove��h���FD وH�7F� �i��NP>�،�iא�9 ع�C�n�Dو%:��^^��A�ICص�'V��aא�� �א �������I�53 ل�WSא ����3 ��'م�א'D$3���

53 Code Project :�� �� �

رابط

http://www.codeproject.com/KB/cs/StringBuilder_vs_String.aspx

Page 85: خطوة بخطوة مع فيجوال بسيك دوت نت

85

تالتعامل مع التاريخ والوق .4

���P\א�U��.' ��QH¢�وא�������Q��3�0�B�${ DateTime Y�3�¢QH����!�s9� ^F!�، :� �

� � #C كود

DateTime dt = new DateTime(2004, 10, 17);

� � VB كود

Dim dt as DateTime = New DateTime(2004, 10, 17)

� �Lא�¢QH�� 1����Dא :� �

#C كودConsole.WriteLine(DateTime.Now);

� � VB كود

Console.WriteLine(DateTime.Now)

� �5P> TimeSpanא ����03�K3א '.��MQC������+$אم �

� � #C كود

TimeSpan ts = new TimeSpan(4, 30, 0);

� � VB كود

Dim ts as TimeSpan = New TimeSpan(4, 30, 0)

�KPTא Substract و Add א�s9!��وא �����v�1+$אم�א $אول��� �� :� �

#C كودConsole.WriteLine(ts.Subtract(new TimeSpan(0, 15, 0)));

� � VB كود

01.Console.WriteLine(ts.Subtract(New TimeSpan(0, 15, 0)))

� Cو �

Page 86: خطوة بخطوة مع فيجوال بسيك دوت نت

86

#C كودdt = dt.AddMonths(2);

� � VB كود

dt = dt.AddMonths(2)

:المختلفةالتحويل بين المتغيرات .5

7N��،��Qא$�Y��jH�YD'�����hאq�\א�Y��h Q'R� �: ���א �

• Widening Conversions� �

• Narrowing Conversions

� �

5.1. Widening Conversions

�����nF�و��،�h����� Wg��$V7Qא�א N'ع��53א ������h Q'Rא ��h Q'Rא I��g�!�5P>�9�t���iHא��'ع��53א

upward cast�53�KQ'R� �� Short��� Integer ،�3^�ل�ذ ��א�� �:�Uא\^�ل�א �

#C كودShort x=5; power(x);

� � VB كود

Dim x As Short = 5 power(x)

� � power و�Uא $א �

#C كودint power(int number) { return number^2; }

Page 87: خطوة بخطوة مع فيجوال بسيك دوت نت

87

� � VB كود

Private Function power(ByVal number As Integer) As Integer Return number Xor 2 End Function

7���53�h������K'ع����� 9�)����`$�אن�א $א�' Int ��53'ع�h�������k��N��Hא��F�! Short �� �Lא�lWS�U�،����PT3�¤�NSن�'P��5 Short K א��A$3�53�4אل Integer ن��A$3אل�A$3�ن�א¦!�� �� Short �07Q ،�و��

�. ��5Fs Integer�$��]��KPאل �

� �

5.2. ng ConversionsNarrowi

אن���53'عq�\ن�א���' � ^3�،��qb�53א����4�9א��KQ'R� ��א �P����،�א�Lא Integer ��53�2'ع��N Short وא

YF.� '���ن��F'ع�א��R�Rb�iH'V���39א�KF����، Integer K �nV.א��$L�53א��qbא Short �' �5P ،�و�. !¦ن�ذ ����Short ��PT3�2�N א!��NsZאن����gD'F}�وز��$ود��A$3אل �

�� �� ��א�1[�א��H���1�Qد�و'P 3��,�WS�K^3�������53�iא�א���Q��3'P �N>�،�G���א� �: Wkא�א �

Cannot implicitly convert type 'int' to 'short'.� �

Lא�lWS�U�،�h����� '����5D�2ذ ����sع�����א�n����17N ��U��Nא ��lWS�5D��F�H�KQ'Rא�H�' �5P �]`���� �~��nF�Q��\ Cast � �

Cast عمليات ال .5.3

1����h���FDאلN��9 cast 5P>�K��،�a7!��qb��4�53א��KQ'R� א��+$א�h���FD�K��U��g3א ��n�D��،�KQ'RאKQ'R� �'S��kא��+$אم��a�א� Integer��� Short � �� �KPTא�� :� �

#C كودint var=10; short var2 = (short)var;

� �

Page 88: خطوة بخطوة مع فيجوال بسيك دوت نت

88

VB كودDim var As Integer = 10 Dim var2 As Short = CShort(var)

�`�����D��1���NF.�' �،����� �N�10`$�א��U var2 ��gא\^�ل�א�� �3�5Pذא� '�א!��NsZא\^�ل�א�،� :� �

� � #C كود

int var=100000; short var2 = (short)var; Console.WriteLine(var2); Console.ReadKey();

� � VB كود

Dim var As Integer = 100000 Dim var2 As Short = CShort(var) Console.WriteLine(var2) Console.ReadKey()

� �g�.'��5P>�5 ��`��N ����73 ����234Fא�iH'V��5P �،�و �K�F�� ����N ����S��`��N ����P��−31072'ن�א�،�

�53� zא��$א�hאH�,9א�@P��� ��Q��3'P �א �אو�7��32768'م ،����� �א �.� ��5Dא iد�Qز�K��03��.Hא��7ص�� �و���53� 'Sو� �N'ع� nV.9א� A$\א� �אو nV.9א� $Lא� 53� 2��N �א �.� �א v�1�� �7Q'م 'g!� H�V�I��32767 .

������Try Catsh��K�VO+$אم�WSא�א N'ع��53א ��h Q'R،�!¦�:��53א\�KMOدאFj��א��+$אم����g��D�f���N��t وא

�.א �z�%�U�X��P.�دم��53 �

Convert التحويل باستخدام .5.4

�JO ����������h+$אم�א ���5P> Convert ^3א ��Y��KQ'Rא�א�'אع��53א�� �KPTא�� :� ��� �

#C كودmyByte = Convert.ToByte(myInt);

� � VB كود

myByte = Convert.ToByte(myInt)

Page 89: خطوة بخطوة مع فيجوال بسيك دوت نت

89

. netالجمل الشرطية في .6

أساسيات الشروط .6.1

� if else א���aא��KFא ������S�����Tא ��t��+$م�� �KPTא����g�������7Qو���، :� �� �

#C كودif (x==5) Console.WriteLine("five"); else Console.WriteLine("notFive");

� � VB كود

If x = 5 Then Console.WriteLine("five") Else Console.WriteLine("notFive") �End If

� � �Uא��KFא �5P>�،�����Tد�23א�^���53,�ط�����+$אم < و > و!=�و�==�א\���Q �h��H�7א��+$אم���!��א�'אع

else if�� �� �KPTא�� :� �� �

#C كودif (x > 90) { Console.WriteLine("ز���");

} else if (x >=50) { Console.WriteLine("�%��"); } else { Console.WriteLine("Gא�H"); }

� �

Page 90: خطوة بخطوة مع فيجوال بسيك دوت نت

90

VB كودIf x > 90 Then � Console.WriteLine("ز���")

ElseIf x >= 50 Then � Console.WriteLine("�%��") Else Console.WriteLine("Gא�H") End If

���'ن���Uא�و�����Fא�����1����Q 2��N ��h�qא ���א N.�و��W�ON����Q�9א �Tط�א ^���� (True) א��Q$7 )�م�א�����t ��1 '���������و��Rb��g�����M7�R وא�� �� �: �א�K^3��MQא����Fא �

� � مالحظة

��0אل����t ��N�C.$���'د����h j�D�03א ��h�qא����Nو��,���������Pن��7'م��C��� �� :�KPTא

#C كودif (string.lenght)

�5 '���ن� :�.�C��Fن���7dא �Tط�P>����=�True��� �...���$,�WS XHא�א N)�م�_��03��L�b�$�Qא

دمج الشروط .6.2

��53,�ط�<�5Pא��+$אم ��KFא�^� && � ���'�CAnd���gو���Uط��T ��Y��23$א �Tوط��W�ON����Q���rא���B True K3��3אو�א��+$אم� Or �� �� �KPTא���XH�,����U�:��������Q�W ���'ن�||وא���U��`�����1��!�

$��،�א\��K3 א�وא �R�Rb��gN3 Not �� �� �KPTא���G�PQ�W ��D$م�!�وא���U�c��!)�O��( �G�����@N�9 ^3�� �� ��$���9�nא�KIא �Tوط��� �KPTא�h9�Lא�lWS�Uא9.'אس� :� �

� � #C كود

if ((x < 90 || x>50) && (!name="ahmed"));

� � VB كود

If (x < 90 Or x > 50) And (Not name = "ahmed") Then End If

Page 91: خطوة بخطوة مع فيجوال بسيك دوت نت

91

3.6. AndAlso

��Nد���'���h������U�.net�K3��\א�Uو�And�� �� ���Hא �Y��T،�وPQ'ن���k%$ول�א �2��Nא�Iא���Qאن��:

�KI$31� ��KI$32� �2��N �א �True True� �True� �False� �True� �False� �True� �False� �False� �False� �False� �False� �

� ���ªRא�ول�[و�����א������f�1 ���'ن�א���U�:�false��Dدא�C�$%'Q�9و�،��J��Iن�'P���i�,��3���Fن�א�¦!�

�K3��\א�:��OQ�9��3א�WS�o� �5P ���53��7Rא���zא ^�����53א �Tط�،�وAnd.�

�03�5P AndAlso�$��Q�'g!�،�oع����'s'\�!�False�±��I�� ��و%'د�א������U�i�,��3�.

����3ذא�����O$��53ذ ��؟�� ZONض�א P'د�א�،�i$Q$,�������:� �� �

#C كودif (id > 0 & SearchForID(id)>0) { // do something }

� � VB كود

If id > 0 And SearchForID(id)>0 Then ' do something End If

� � '���ن�אل��n�����RوQ$,�za��2�NQ��3�'S$�%$א��Uא\������UIdא 'א.�0و �א�53��qbא !�،��OV�������W�ONא��3א

�� �� �KPTא����Q$��7� ��7Q�1א����g��D�G�q� :����9ج�� �:�،����Qא

� � #C كود

if (id > 0) { if (SearchForID(id) > 0) { // do something } }

� �

Page 92: خطوة بخطوة مع فيجوال بسيك دوت نت

92

VB كودIf id > 0 If SearchForID(id)>0 Then ' do something End If End If

��7Q�1و�AndAlso:�� �

� � #C كود

if (id > 0 && SearchForID(id) > 0�) { �//��������do something� ��}��

� � VB كود

If id > 0 AndAlso SearchForID(id)>0 Then � '� do something End If

6.4. OrAlso

���H�P�Q�،�ORא��03��3א\��S��F�And�K3'�א�Lل��03�� :�%$ول�א �2j��Nא�W �:�وא �

�KI$31� ��KI$32� �2��N �א �True True� �True� �False� �True� �True� �True� �False� �True� �False� �False� �False� �

� � ���U�:�¦��ªRא�ول�و�����א������f�1 3��,�P���i'ن���R�Rb،�وC�$%'Q�9�دא���True��D'ن�א���Fن�א�¦!�

�K3��\א�:��OQ�9��3א�WS�o� �5P ���53��7Rא���zא ^�����53א �Tط�،�وOr.�

�K3��\א���ن�אWS�K%�53אOrAlsoس�H$ �وא W��z�ND��O�PQ�9א �S��F��h I$3�i$D�53��7R'�א�Lل��Uא�03��MQא����� �.AndAlsoא

� �

Page 93: خطوة بخطوة مع فيجوال بسيك دوت نت

93

Switch Case استخدام ال .6.5

�`�KFא ��S�����Tא��+$אم�A�I��7אQ�� Switch Case � �� �KPTא�� :� �� �

#C كودswitch (x) { case 90: Console.WriteLine("ز���");

break; case 50: Console.WriteLine("�%��"); break; }

� � VB كود

Select Case x Case 90 Console.WriteLine("ز���") � Case 50 Console.WriteLine("�%��") End Select

� ��!�sא�@N��9 break H���Iא�U�Hא�F��9�53א���Q��3'P ��Gאن�ذ ��<�0Nא� �א �א �Tط�، �Iא�U وط��T ��.��א

�D�lH�3و�U�G�����Nذא���� �א�3 ��n�D��^�Qאول�,�ط�، �3$NDn�� �03���7א��K��n oM�� !��gN3א �Tوط�

break ���M�\א�lWk���5��ض� �.�،��Uא �O`'אل������ �� �

Page 94: خطوة بخطوة مع فيجوال بسيك دوت نت

94

: الحلقات التكرارية .7

��Pא��1��Hאو�א�3�i$D��3א���v�TN��،�hق��QHא�P� � ���+$م�א�h�7�Lא�`D�n�Dس�H$ �: א ��PאWS�U�Hא�א �� �

7.1. Next Loop-For

��Q�Hא�P���7�� $�� �� �$א��Qوא ��Q�gNو$73א�Hא���g�!�i'1،�א��3�a^�ل���g��Dא P'د�א �: ��17��$Qא �� �

#C كودfor (int i = 0; i < 10; i++) { Console.WriteLine(i); }

� � VB كود

For i As Integer = 0 To 9 Console.WriteLine(i) Next

��O7 3^ ��� �KPTא ��$73�KFD�5P>�=2א�Hא�� 1����DאH9.�م�א �و3���%^ - - :� �� �

#C كودfor (int i = 0; i < 10; i+=2) { Console.WriteLine(i); }

� � VB كود

For i As Integer = 0 To 9 Step 2 Console.WriteLine(i) Next

Page 95: خطوة بخطوة مع فيجوال بسيك دوت نت

95

7.2. While Loop

���n���7,�ط�KF� ZONض� ���P���7א��H���U��Fא�،�Y�3��.Hאد����$� 310^ ����nوb'ل�א :� �� �

#C كودint x = 0; while (x < 10) { Console.WriteLine(x);�X++; }

� � VB كود

Dim x As Integer = 0 While x < 10 Console.WriteLine(x) X+=1 End While

n���hل�������Iאد�،���F.H���A�Iא�� �� ���'exit lWS�U�،o�M��f אد�Iل �Lא� Do 0Mو���Qא$� �Uא

While��Q�gN �. �Uא �� �

#C كودstring inp; do { inp = Console.ReadLine(); Console.WriteLine(inp); } while(inp!="exit");

� � VB كود

Dim inp As String Do inp = Console.ReadLine() Console.WriteLine(inp) Loop While inp <> "exit"

Page 96: خطوة بخطوة مع فيجوال بسيك دوت نت

96

7.3. For Each Loop

�n�Dאن�Hو$� )K��(،�Y�3�z�, ^3��N��3��!'OV3��b�ND�K��n�Dאن�Hو$� � ^3 :� �� �

#C كودint[] arr = { 10, 20, 30, 40 }; foreach (int i in arr) Console.WriteLine(i);

� � VB كود

Dim arr As Integer() = {10, 20, 30, 40} For Each i As Integer In arr Console.WriteLine(i) Next

� �� �� �� �� �� �� �� �� �� �� �� �� �

� �� �� �

Page 97: خطوة بخطوة مع فيجوال بسيك دوت نت

97

� �� �� �� �� �� �� �� �� �� �

� �� �� �

الجزء –مكونات اللغة االساسية الثاني

� �� �� �� �� �� �� �� �� �� �� �� �

الباب

7

Page 98: خطوة بخطوة مع فيجوال بسيك دوت نت

98

� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �

Page 99: خطوة بخطوة مع فيجوال بسيك دوت نت

99

لنفهم برنامجنا األول .1

�D��1 9�)��N�������Nא�ول��' ��B Hello World ���W �وא�� �: ن��� �KPTא �� �

#C كودusing System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication4 { class Program { static void Main(string[] args) { Console.Write("Hello World"); Console.ReadKey(); } } }

��� �� :�U��3C!�`'אل������!�Pن��� �KPTא �

� � VB كود

Module Module1� Sub Main() Console.Write("Hello World") Console.ReadKey()� End Sub�End Module

�l$`N���3אول��UC#�'S�t ���hא�P\אد�א �����Pא�'אد�������+ א����g3$+��Nאم�$ using .� �

� �3C��אل���'`�O ���U�oQ������!�Moduleא i�,��3� :�Iא��'אد�دא� ����P���F.אل�� ،Module� �J!� 'S�Class���S��g��J!�0�Bن�Cא�$D��3��Qد�DShared-Static��53'ع���Dو�T3ن�'��� ���U�� �'Qאل���'د'`�O ���S]TNQא

VB.�� �

����^ �א zא��� ������UC#�oQ'د 'S אل name space א�K�� :���0s'��W �א���9א 'Sو� �N���4ص���� ��U��NF�����Fא�3��د¨� �Main...� ��Nj�����4 א�����9 $Class ������NQ ���אل �h��'P3א �23��4،�و53

Page 100: خطوة بخطوة مع فيجوال بسيك دوت نت

100

Cن�¦!�:%'� Main א\�Class nF ،�א $א ��א ��j�����Uאل P�Q�23���� Classes'ن��53وא�$�אو�א�^���53אل א

� �. وא ��SW�ON����Q�tאول�,��U�zא ��S main 23��4א $א �

� 7��Kא $א��� Main א��������3�� 7��53��D'F� args ��!'OV3�:��qT��03�Kא��Q�23��4 ،�WS�nN�3א�אن�א53 args[0] �� args[n] ، nF�Q��3�'Sو�،��k I�53�23��4 �5P> Commandא��Hل��Q����3�K$����א

Line Parameters.�� �

9��P �א�hא 3�5D�$� Command Line Args ��S�Q�e�5P>�t���U���Hא �v�T،�אل���q�\�53א��D'F���S:��qT���.�23��4و� � �� ����U��PR���א �7Nط�،�3^ � '�.�����P���NFא��39א :� �

كودExplorer http://www.vb4arab.com

� ��ذא ���Q Expolorer!�������23אول��3 ،�: �H�F\א�*N �7Q'م���7א�izא ، �KPT ���:R�O7'م��Q���Zن�3'.�0א���H��3ن����' !��7'م����OV�3���Oא¡�$א�03�hא�O���g@�א C:/���U�23��4 3^ א\�g'د�\���OVא���Z�9،�א��3

��Q�gN �.א �

izل�.�א I�53��������n�D�� :��Q���5Dא\� ����0�1}����ذ�i�F\א�hאq For Loop :�� �� �

#C كود for (int i = 0; i < args.Length; i++) Console.WriteLine(args[i]);

� � VB كود

For i As Integer = 0 To args.Length - 1 Console.WriteLine(args(i)) Next

���X�SW ��Z�3Hא�hא 3���� �U�G����t��Run �P���.�،H א�ن�.���� �������و3����53��!��و����������53א ���g%�U�،��S�Q�e Uز�� ���א��39א�� Run:�� �

� �� �

كودC:\Users\Ahmed\Documents\Visual Studio 2008\Projects\ConsoleApplication4\ConsoleApplication4\bin\Debug\consoleapplication4.exe ahmed ali

Page 101: خطوة بخطوة مع فيجوال بسيك دوت نت

101

� �� ����ن��� �KPTא��g&�W �: א �2��Nא �

q�\א�iz7'م���7אN��،�0Q������ ��و%'د� ��1���Uא�0א�ول�و$D��F�!ق�،�وHم���9ز P ����O�I�5Q'�����Q� ^3א��Q�� ���'�5Q ذWد�א��ص��'P �: ��O��Iא P م����"��،�WSא�S'�א �

� � #C كود

if (args[0] == "0") { Console.BackgroundColor = ConsoleColor.Blue; Console.WriteLine("0 enterd"); } else { Console.BackgroundColor = ConsoleColor.Red; Console.WriteLine("Empty"); } Console.ReadKey();

� � VB كود

If args(0) = "0" Then Console.BackgroundColor = ConsoleColor.Blue Console.WriteLine("0 enterd") Else Console.BackgroundColor = ConsoleColor.Red Console.WriteLine("Empty") End If Console.ReadKey()

_�' � ��3ذא ،� ��PT3� �NS� �Ng%א'� �hאq�3�א��Q�F����7�� ..� ��g(��1I�� ��H�]�53�$�]�� � �%�r�5ذن���� ،�א�h و%'دq�3�53و%'د��$�]� ����Q���5DאW7'م��N��،��g�zא�.�K��3س�.H��¤�NS�53 ،��ذא���ن��$�]� !����א

���^ �'ن�א�]`���Y��T �: �'���Ob��g،��ذא�א�K�Iא��53א �� �

Page 102: خطوة بخطوة مع فيجوال بسيك دوت نت

102

#C كودif (args.Length > 0) { if (args[0] == "0") { Console.BackgroundColor = ConsoleColor.Blue; Console.WriteLine("0 enterd"); } } else { Console.BackgroundColor = ConsoleColor.Red; Console.WriteLine("Empty"); } Console.ReadKey();

� � VB كود

If args.Length > 0 Then If args(0) = "0" Then � Console.BackgroundColor = ConsoleColor.Blue Console.WriteLine("0 enterd") End If Else Console.BackgroundColor = ConsoleColor.Red Console.WriteLine("Empty") End If Console.ReadKey()

� ����Nאن�����I��K،��3ذא� '�א�¤�NS � �� �KPTא���$�� >��Kא �[�$���1��Uوא �

� � #C كود

if (args.Length >0 && args[0] == "0")

� � VB كود

If args.Length > 0 AndAlso args(0) = "0" Then

Page 103: خطوة بخطوة مع فيجوال بسيك دوت نت

103

���^ ��Tط�א�K7�N��� �S$%ذא�و�� ��c�Qא�:����[�$��53و%'د���Z�3Hس�، �!¦�:���ج�3��,��iو�ذא�_�® WSא �S$���^ �... دون�.�א�izא �Tط�א �

K3��\אن�א���W ����Q$א� And U�:7��1��5P>�5 VB.net �1M���K��، ��9+$אم� AndAlso������W א�:��UدHوس������7�,.� �

� �

Function الدوال .2

� �א��z�Tא�D$د��53א $وאل��[�D$د��53א\��U���$S�,��F� Main qدא �NNP>�،�'S�:� א�����3�K��،�hج�� ZONض 3��!�� ،� �gN3ج�H�2א����N �א �MQوא� ،�� �$א�KVאن��� �k�$Q���t �3א�hאH�� �����F א�� ����FVدא �Nא�� ^3

YF.H�K�7����،�0Fא� int 2و§�ج���� int ن'P���، � �� �KPTא���� �: א $א � #C كود

static int sum(int number1, int number2) { int total = number1 + number2; return total; }

� � VB كود

Private Function sum(ByVal number1 As Integer, ByVal number2 As Integer) As Integer Dim total As Integer = number1 + number2 Return total End Function

��3^ א��$Main �gj�D و�RN��،����53ول�I�53 ل�� �KPTא�� :� �� �

#C كودint result = sum(5, 8); Console.Write(result); Console.ReadKey();

� � VB كود

Dim result As Integer = sum(5, 8) Console.Write(result) Console.ReadKey()

Page 104: خطوة بخطوة مع فيجوال بسيك دوت نت

104

\oQ��ذא����� sum �gא��n�D Static �XH�,��� �؟؟�Uא �� �

��� ��Gא�:��5P>�9א��$�z�Dدא� ��53��S static'ع Main ،�و{��אن�دא � I�53 static ل�دא � Static א

��Q�A�Iא�� �I�53 ل�אل ! ���53�$אن��P'ن�א�دא �gj�D$א�� main��S static �����n�D�f���N�� ،� �MQאs9א�K�b�O� 9�7�� �!��א.� �

mehtods الطرق .3

K^3�،�2����$����9�t � א �1ق���Sא $א ��א�� �KPTא���� ��Hض��������D�� �: دא �� �

#C كودvoid printmsg(string msg) { Console.WriteLine(msg); }

� �P'ن VB.net א\����Fא03��MQ،�وSub �'S �،���ن��oQ������Qא ��6������7Q�1��� �Uא O`�'אل � �� �KPTא�� � �

� � VB كود

Private Sub printmsg(ByVal msg As String) � Console.WriteLine(msg) End Sub

Out الوظيفة .4

���� �،��3ذא� '�אHد���א�Dد����i`���53دא 7���N�¦! return'م���H%�ع�א I�53��`��N ل ��U��NF�����Fא\^�ل�א

void � � ���Q�، Outذ ������+$אم�א $א�� �KPTא�� :� �� �

#C كودstatic void sum(int number1, int number2, out int total) { total = number1 + number2; }

Page 105: خطوة بخطوة مع فيجوال بسيك دوت نت

105

� � VB كود

Private Shared Sub sum(ByVal number1 As Integer, ByVal number2 As Integer, ByRef total As Integer) total = number1 + number2 End Sub

� �אل P'د� �R�RV �א �BZ �O`'אل��������Sא��� �bא��� �7��� �א � �5 C#�iH'V����3�KF����Pא $אP �و ،��U��R�RbMoudle�5D�cq��ن��C�$��9�Sharedد'P Wא��7N'م�����gND�z�Nq��9א��$אWS�53�zא�א�،��Yd�n���

��g�$j�!و��S�N�3�v�,�$D'3.� �� �

W �אq�\א��Q�e���Q�� ��ض�א ��N`��אMQ� وND$�א��$�z�Dא $א�:� �: ���ج�� �� �

#C كودint result; sum(5, 8,out result); Console.Write(result); Console.ReadKey();

� � VB كود

Dim result As Integer sum(5, 8, result) Console.Write(result) Console.ReadKey()

� ��7Q�1 ��Gא W���9�c�!$Q�$.+$אم��lWSא� �؟ return ��53�9$א��+$אم و S��3�5P'�א �

a��9א�3�3 א����%9א�@��!�،��F�7 '�אHد�hא�Dد�iא�^���2����K^3��`����53א �X�Mوא��0Fوא�cא���S�، �K��iد�Dא�A'אم�$+�����'S�a��9א�KLא�،�¤�NS��g�zم�و.�א�.H9����!'OV3 out .�� �

� �

Page 106: خطوة بخطوة مع فيجوال بسيك دوت نت

106

byval واالرسال بالقيمة byref االرسال بالمرجع .5

� �� �KPTא���v�1 ZONض�א\^�ل�א��ص�������Fא :� �� �

#C كودint x=5; int y=10; sub(x,y);

� � VB كود

Dim x As Integer = 5 Dim y As Integer = 10 sub(x, y)

� � وא $א �� �

#C كود static void sub(int number1, int number2) { number1 = number1 - number2; return number1;� }

� � VB كود

Private Sub [sub](ByVal number1 As Integer, ByVal number2 As Integer) number1 = number1 - number2 Return number1 End Sub

� ��NF.��7��� �.��U �Fא $א ��א�q�� number1�F�.�53א�WS�q���KS�5P ،� א �tא��S�N��H،�א�%����x ���S �،�و

�F�.ل���H���� �Lא�lWS�U7'م��������F�7 ��. X و ����.��F ���א $א � WS xא���H���f��Q��3ل�א � � ��H9 ByRefل���\�0%א�Lא��S q�\אن�א'NDل���Hא���Q�� �Lא�lWS�U�،�����^ �Uא Wא������iא $א ��،� X א

�WS Uא��3�q��אن�א�c�Q number1�q�\א�n�D�iHو�M �����p�� x .�� �� �

�7Q�1������ �����Pא P'د�א ByRef � �� �: ��G�Pא P'د�א �

Page 107: خطوة بخطوة مع فيجوال بسيك دوت نت

107

� � #C كود

static void sub(ref int number1, ref int number2) { int result = number1 - number2; return result;� }�

� � VB كود

Private Sub [sub](ByRef number1 As Integer, ByRef number2 As Integer) � Dim result As Integer = number1 - number2 � Return result End Sub �

� �hאq�\��1،�א��3א��� א�hאq�\�03א�a7!�:7��1��5P>��F�7 !����א ���Class :�3�K3 א\�����K^3 א��H9ل���

ByRef���sאZ!א ...� �� �

Arrays المصفوفات .6� �

Arrays ما هي المصفوفات .6.1

h����� �����5D�iH�����53אD��S��!'OV\א oQ��� � � O��53 Array@�א N'ع�، �k'م���.H9�535א�G�P�� �b�ND�� �� �: א P'د�א �

� � #C كود

int [] intarray = new int[5];

� � VB كود

Dim intarray As Integer() = New Integer(4)

C$�Q �n�� �7א�izא�$���b�NDא\��G�P���!'OV'د�4K^3א �U���.Zא\�53�h�!'OVא ��OVو�،� � �� �: א �� �

#C كودConsole.WriteLine(intarray[3]);

Page 108: خطوة بخطوة مع فيجوال بسيك دوت نت

108

� � VB كود

Console.WriteLine(intarray(3))

�b�N� � و �7א�0�B�izא�� �KPTא���Hא�P� �: <�5Pא��+$אم����h�7א �� �

#C كودfor (int i=0;i<5;i++) Console.WriteLine(intarray[i]);

� � VB كود

For i As Integer = 0 To 4 Console.WriteLine(intarray(i)) Next

� �

: تكوين المصفوفات .6.2

���h����� ��3^ א ��7Q�1א9�Kg�9د�Iل�א�� �KPTא����!'OV\א :� �� �

#C كودarray[0]=15; array[1]=20; array[2]=13;

� � VB كود

array(0) = 15 array(1) = 20 array(2) = 13

���P���7א�HאMQ��،���9אن��Q���5Dو�C �7Q���¤�NS ^3�� �� �KPTא����!'OV\א����h����� �: �9�A�ICد�Iل�א �� �

#C كودint[] intarray = new int[] { 15, 20, 13 };

� � VB كود

Dim intarray As Integer() = New Integer() {15, 20, 13}

Page 109: خطوة بخطوة مع فيجوال بسيك دوت نت

109

� �

المصفوفات متعددة االبعاد .6.3

h�!'OV3��S��7��� ��$ �0�Bא\�h�!'OVא ،��NS¤�א�'אع�א�53�A�Iא\one dimensional �h�!'OV א��د��Qאiאو��3�$د���j�N� א�9��د Multi dimensional א�9��د����j�N���!'OV3�n�Dא�3^�ل�WS�،−�����nF��� Matrix - :�� �

� � #C كود

int matrix = new int[3,3];

� � VB كود

Dim matrix As Integer = New Integer(2, 2)

'OV\א�KP,ن�'P���� �� �KPTא����!)�sאZ!א:�(� �� �

0 0 0 0 0 0 0 0 0� �

�17�����h����� � و<�5Pאد�Iل�א�� �KPTא����!'OV\�53א :� �

� � #C كود

matrix[1,2]=20;

� � VB كود

matrix(1, 2) = 20

� �KPT ������h،�و ���Q���5D�5Pא\��+$م��� ���P���7א9�Hد�Iل�א�KFD�5P> ^3�� �� �: א �

� �� �

#C كودint matrix = new int[3, 3]; for(int i=0;i<3;i++) for(int j=0;j<3;j++) matrix[i,j]=Console.ReadLine();

� �

Page 110: خطوة بخطوة مع فيجوال بسيك دوت نت

110

VB كودDim matrix As Integer = New Integer(2, 2) {} For i As Integer = 0 To 2 For j As Integer = 0 To 2 matrix(i, j) = Console.ReadLine() Next Next �

�MQא�KPT 1��ON���D@�א �. وא �� �

عمل مصفوفة من المصفوفات

n�D��gN3��VND�K��'�d��!'OV3�KFD�5P> � �� �KPTא����!'OV3 :� �� �

#C كودint[][] complexarray = new int[5][];

� � VB كود

Dim complexarray As Integer()() = New Integer(4)()

b' ��3^ و<�5Pא�� �: 'ل�����Q���5D��g�!��VNDא P'د�א �� �

#C كودConsole.WriteLine(complexarray[1][4]);

� � VB كود

Console.WriteLine(complexarray(1)(4))

c�Q��3א�WSو ��.H��VN� ��.complexarray א\OV'!�א\'%'د�53��5Fs�iא\OV'!��א�و��4א �� �

Page 111: خطوة بخطوة مع فيجوال بسيك دوت نت

111

فات من وإلى الدوالالمصفو ارسال واستقبال .6.5� �

� �� �KPTא����!'OV3�h�Q'�)��D��1 �� �: <�KFD��NPدא �� �

#C كودstatic void print(int[] arr) { for (int i = 0; i < arr.Length; i++) Console.WriteLine(arr[i]); }

� � VB كود

Private Sub print(ByVal arr As Integer()) For i As Integer = 0 To arr.Length - 1 Console.WriteLine(arr(i)) Next End Sub

�g�3�K3��� ����א�:����Qא��n�N��9 byref א��������!'OV\א�n�D���p���� Wא�C����U�KQ$א $א�،���sאZ!א .� � ���'ن�אل���U array 53�:د��D���3'د�א��S � �،���G�Pא P'د��� return KPT א $א�� �: �א �

� � #C كود

static int [] read() { int []arr=new int[3]; for (int i=0;i<3;i++) arr[i]=Console.Read();�return arr; }

� � VB كود

Private Function read() As Integer() Dim arr As Integer() = New Integer(2) {} For i As Integer = 0 To 2 arr(i) = Console.Read() Next Return arr End Function

Page 112: خطوة بخطوة مع فيجوال بسيك دوت نت

112

� �

خصائص المصفوفات الرئيسية .6.6

�:����U�¤$Dא ���g��D�KF،�א,��S�gوא�^���Sא��+$א3�� ��'�א\j�VI�����n�D�h�!'OV*�ودوאل�.$ �� �

��bא��� �א��9+$אم� �Length� ��'ل���b�NDא\OV'!� �$د� �

Sort� ���Z7'م����!'OV\א��b�ND�G� �Reverse� ��!'OV\א��b�ND�G�����@P�7'م���� �ToString� ��V��q�3�����!'OV\א�KQ'R� � �

Rank �!'OV\א�Uد�א�9��د�$Dد�$� � �� �

Enumeration ـال .7

Enum� �H�V�Iא~ enumerations - h9���K^e��b�N� � و.��������Oدא�KIא 23��4��'��53��D'F��n�Dא � ZONض� $�E ���NQא�'אع�3�a Enum 53^�ل��n�Dאلא���،�hאH��� ��\'د�h Qא���U��g3א��+$א�'S �hאH��� א�،Toyota �،Nissan אIوא FIAT ���.�KP,�n�D��gNQ�+7'م������N��' �����2��N�¦!�،� ^3�hو� 0�،�1،� ��i$D�.�Uא

K���.Hل��Iאد�n�D�234\אن�>�4א�$Q���9 �K�� ،�iH������� �7�9�:�B��������W �وא �gل�א��Iאد�:NP>: ��&�N\א��.� �. א �

� � #C كود

enum cars { toyota=0, nissan=1, fiat=2 }�

� � VB كود

Enum cars toyota = 0

Page 113: خطوة بخطوة مع فيجوال بسيك دوت نت

113

nissan = 1 fiat = 2 End Enum

� �$Q$���MQא��NNP> אل��VND��g�!�5Q�§���Q�t א N'ع ��H�Vא\�����א�5P>�،��MQ�enum I9$Q$ א\�����א

byte�� �� �KPTא���� �: �F^�ل��n�Dذ �� �

#C كودenum cars:byte { toyota=0, nissan=1, fiat=2 }

� � VB كود

Enum cars As Byte toyota = 0 nissan = 1 fiat = 2 End Enum

U�i$Q$א��z��9א��+$אم�א� �NNP>4 א�ن� �א��9+$אم�،�א � 'g�� �N �KOPQ� �}� �א �3'ز �Cو ��53אH9.�م 9$�� �� ZONض�3^ iH��� ��ض�����א�����n�D�z�N��iHא���א�� �. א�Q����N$������دא �

� � #C كود

static void printPrice(cars mycar) { if (mycar == cars.fiat) Console.WriteLine("20,000"); else if (mycar==cars.nissan) Console.WriteLine("30,000"); else Console.WriteLine("40,000"); }�

� � VB كود

Private Sub printPrice(ByVal mycar As cars) If mycar = cars.fiat Then

Page 114: خطوة بخطوة مع فيجوال بسيك دوت نت

114

Console.WriteLine("20,000") ElseIf mycar = cars.nissan Then Console.WriteLine("30,000") Else Console.WriteLine("40,000") End If End Sub

��. byte א ���7א O�����א\+������53��S'ع WPSא�>$�א����N��+$م�א���zوא���H��Rsאن �

�3��sאو K �i$j�O��:��§��NP> enum دوאل��S API א.�0א�' 'NQ$وز�،��Uא����bא��K����� �K^3�h�����00A127X �K^3��Rsא' �$وאل�،� �U�5Pא 'א.O��${�0��������K���א����zא Local �9$���3�q�\�� 9$�

��. .�3'س� ��BZא �3'ز �53א �3'ز�א\��i$7وא ��gFg!����D�G�V���tدون�و%'د �� �� �

Structureالتراكيب .8� � �Structs 3 אو Structure ~א �VVא�'אع����S�NP>�h����� �����K"�0�1א��n�D�*j�VI �5א �Sz�Tא�

n�D3^�ل��a�א��،�:! Iدوאل�و�n��א�hאو�q�3�KP, Struct �0NV �iH����KP>$�3'د�KQא�،�iH��� S'�3^�ل�א��'� ����������NNP>�،� ^3 Struct ^3אل وא���א\����HوH.��א�� �KPTא�� :� �

� � #C كود

struct Car { public int carNumber; public int year; public string factory; };

� � VB كود

Structure Car Public carNumber As Integer Public year As Integer Public factory As String End Structure�

Page 115: خطوة بخطوة مع فيجوال بسيك دوت نت

115

��+���oQ����$Q����3$ND3�5وא�ن�iH����T ����gVj�VI�Y��7'م������N�¦!�� �� �: �KPא �� �

#C كودCar ahmedcar = new Car(); ahmedcar.carNumber = 1000; ahmedcar.factory = "Nissan"; ahmedcar.year = 2007;

� � VB كود

Dim ahmedcar As New Car() ahmedcar.carNumber = 1000 ahmedcar.factory = "Nissan" ahmedcar.year = 2007

'�א!S Struct �NsZ'�א����I$و�5P> Struct �VND�n�D lHאن��d'�אل�، Struct��n�D�'�d�� ���VIא � א���א\��+$م�� �KPTא���� �: وא �N'א�hא\���z�g��9���7א �!�،� ^3��VI��P'ن�ذ �

� � #C كود

struct Licence { public string UserName; public int yearsToFinish; }

� � VB كود

Structure Licence Public UserName As String Public yearsToFinish As Integer End Structure

z�%�� � وא�ن� '�אHد���אن�>���VIH�Kא�� �KPTא���� �: j�VI�53*�א ����iH،�!�����ذ �� �

#C كودstruct Car { public int carNumber; public int year; public string factory; public Licence carLicence; };

Page 116: خطوة بخطوة مع فيجوال بسيك دوت نت

116

� � VB كود

Structure Car Public carNumber As Integer Public year As Integer Public factory As String Public carLicence As Licence End Structure

� و �j�VI�$Q$R*�א������G�PN��iH'د�� �KPTא�� :� �� �دكو C#

Car ahmedcar = new Car(); ahmedcar.carNumber = 1000; ahmedcar.factory = "Nissan"; ahmedcar.year = 2007; ahmedcar.carLicence.UserName = "Ahmed Gamal"; ahmedcar.carLicence.yearsToFinish = 3;

� � VB كود

Dim ahmedcar As New Car() ahmedcar.carNumber = 1000 ahmedcar.factory = "Nissan" ahmedcar.year = 2007 ahmedcar.carLicence.UserName = "Ahmed Gamal" ahmedcar.carLicence.yearsToFinish = 3

Struct انشاء الدوال داخل ال .6.1

�7'م������א �WS�n�D�h���Fא�אل א��z�Tدא � �U��NNP> Structدא�KIא Struct a�א��،�' �� �3^�ل��n�Dذ� ��������אل renew אHد����KFDدא�Lא�lWS�U�5P>�،�� �`$��VIH�$Qא Struct � �� �KPTא�� :� �

� � #C كود

struct Licence { public string UserName; public int yearsToFinish; public void renew(int periode)

Page 117: خطوة بخطوة مع فيجوال بسيك دوت نت

117

{ yearsToFinish += periode; } }

� � VB كود

Structure Licence Public UserName As String Public yearsToFinish As Integer � Public Sub renew(ByVal periode As Integer) yearsToFinish += periode End Sub End Structure

5D��VI� 3��,���Q��iא 'b'ل�����lWSא وWPSא�<�iZ!�$Q${��NNPא�� $א .� �

h�7��1� 3��,���Q���5D�9��iدא ��وذ � �Uא��b�N� 'b'ل����א���� ��F�Q�9�iد�� \�0Nאد�Iل� א �U�����Oא� ^3� ��'�q3�h������ .� �אل��KFD�5P> Createدא z�T�9 Struct � ��53אل3^ �+��� z�Tא�� Struct ���Q و��$

5 �����h����� �א��$�lWS�z�Dא $א ��\�±�א��F�Q� hאq�\א��.����Q¯�� .� �

�����+$אم �I�� K�� ¤�NS Constructor אل� 53� �+��� z�Tو.��א���NP>����� ،� $�T\א� Struct ��Q�e אوh����� � א�� �KPTא���$�T\א���������Q�،���'�1\א :� �

� � #C كود

struct Car { private int carNumber; private int year; private string factory; private Licence carLicence; public Car(int p_carNumber, int p_year, string p_factory,Licence p_carLicence) { carNumber = p_carNumber; factory = p_factory; year = p_year; carLicence = p_carLicence; } };

� �� �

Page 118: خطوة بخطوة مع فيجوال بسيك دوت نت

118

VB كودStructure Car Private carNumber As Integer Private year As Integer Private factory As String Private carLicence As Licence � Public Sub New(ByVal p_carNumber As Integer, ByVal p_year As Integer, ByVal p_factory As String, ByVal p_carLicence As Licence) carNumber = p_carNumber factory = p_factory year = p_year carLicence = p_carLicence End Sub �End Structure

hאq�\ل����א'b' ��Nא'���Nא��ª� �P'ن 9 private ج�אلH�I�: ،��5P>�9���r Struct �h�!��3א 'b'ل�$����D�U�KI$���FN_�אل א 'b'ل���P'ن�א��N��s3'א OOP אن������אن��OPQ�5P Wא��K`����9و public

K�{ �3א�،�� �אو�א $אq�\ن����א�P3�ل��53א'b' ��53�9دא�KIאل ! �<�5Pא 'b'ل�private �k .������א

Struct�.�� �� �

Reference واألنواع Value األنوع .9

אN��،�h`$�אن�3�)��א�'אعq�\س�א�'אع�אHد����A�IC�i�3���$D�' 53��7�T3�h����� ،�Value Type �nN�3 א53��7�T3א��'אع��lWSאن� Value Type Kאن�� NsZ!א�'�!�،�:�O��K^>��gN3�q�3� �� 3^����9 �KPTא�� :� �

� � #C كود

int x=5; int y=x;�y=18;�Console.WriteLine(x); Console.WriteLine(y);

� � VB كود

Dim x As Integer = 5 Dim y As Integer = x y = 18 Console.WriteLine(x) Console.WriteLine(y)

Page 119: خطوة بخطوة مع فيجوال بسيك دوت نت

119

:�.����b�I��F:�،������א� y و N� x`$�אن�� �53U��gN����NQو����N ��B�U��Nא��G�� �$א��Q،�א !y=x ��g אq�3�]TNQאن����Q��3'P �. y �F�.�n�D�KVd x א �

א�hא������9،q�\א�n�D���1NQم��(N �... א�n�D struct �MQאل �WS�@Oא�א �

1�����g��Dא\^�ل�،� ZONض�3^�ل�א �� �K^3 Classאل Refernce Types א��'אع���53'عNQ�9� �� �KPTא���iH� � �

� � #C كود

class car { int carNumber; string carName; }�

� � VB كود

Class car Private carNumber As Integer Private carName As String End Class

���� � ints �03אل وא�ن��O��G�PN@�א\^�ل�א�� �: ،���P'ن�א\^�ل��� �KPTא �� �ودك C#

Car x = new Car(); x.carNumber=1; Car y=x; Console.WriteLine (x==y);

� � VB كود

Dim x As New Car() x.carNumber = 1 Dim y As Car = x Console.WriteLine(x = y)

Page 120: خطوة بخطوة مع فيجوال بسيك دوت نت

120

q�\�5אن�א(���N��' y 53��+���n�D�'�d car �g��D�KQ$�� �،��ذ�אن�א\[![������NP> 1אq� x و y

U�KQ$���]!�� �� �،�و��q�\א�@ON ون�TQ �53�� ��NP>�،��I³א �[�$��53ذ�KQ$���U�G�������FS$�א� �� �: I ل��'د��K^3א �

� � #C كود

Car x = newCar(); Car y = x;�x.carNumber=1; y.carNumber =2;�Console.WriteLine (x.carNumber); Console.ReadKey();

� �دكو VB

Dim x As Car = newCar() Dim y As Car = x x.carNumber = 1 y.carNumber = 2 Console.WriteLine(x.carNumber) Console.ReadKey()

��53��7�7אل��+���KF� Class nF�\א Car ���1��53�$��9 Clone K�´��.� ، Car Class אل���1Q

Cloneaple Interfaceدא������P���.אلو�� Clone.� �

المقارنات .10����� ،��Qא$� ��17Nא�A�IC�i�3�$�N �K3��\א�Y�4\א�Gم�א��$+��Q�=�K3��\و�אC�==U C# ،� ��H�7F�

� �: א���aא3^���ذ �

#C كودif (x==y) { }

� � VB كود

if x=y Then End if

Page 121: خطوة بخطوة مع فيجوال بسيك دوت نت

121

�F�7 ��א ���و�!�P���F'ن True א]P� ��V'ن�א���U False $V7،�و��و��� ��D$م�א���U ��NS�و��� ��

� ^3�K3�P ����1 ،�و WS�5Pא "C� "Ahmed"="Ahmedو7=�7אو�5=5:�א ���و�א 1���!�n�D�a7א�9'אع�אNQ .� �

مالحظة ... وغيرھا Int , Long , String ا¡نواع البسيطة ھي ا~نوع مثل

�MQא�� �� ��03��Nא\^�ل�א�,�Kbא'N� :� �

#C كودstring a = new string(new char[] { 'h', 'e', 'l', 'l', 'o' }); string b = new string(new char[] { 'h', 'e', 'l', 'l', 'o' }); Console.WriteLine(a == b);

� � VB كود

Dim a As New String(New Char() {"h"C, "e"C, "l"C, "l"C, "o"C}) Dim b As New String(New Char() {"h"C, "e"C, "l"C, "l"C, "o"C}) Console.WriteLine(a = b)

�`��N ����)�Kא�Lא�lWS�U True د'P �� אMQ��،�و �3�5Pذא� '�א���N�Fא�� �: ������1א �� �

#C كودobject c = a; object d = b; Console.WriteLine (c==d);

� � VB كود

Dim c As Object = a Dim d As Object = b Console.WriteLine(c = d)

o� ��N&�G�+������� �� ،�אFalse lWS�U�KL ��ن�א P���2��N'ن−�Uא ���,���a7!�XH−�א ���1א�LאK3��\אم�א$+���� Equals:�� �

#C كودConsole.WriteLine (c.Equals(d));

� � VB كود

Console.WriteLine(c.Equals(d))

Page 122: خطوة بخطوة مع فيجوال بسيك دوت نت

122

�K3��Fא��+$אم���I� Equals אل�Y����H�7F� Structs ضZON �،� ^3 � �� �: א\^�ل�א �

#C كودstruct car { public int carNumber; };�

� � VB كود

struct car { public int carNumber; };

�NF.�' �� وא�ن�،��� א�hאq�\א�oQ���� :� �

� � #C كود

Car x = new Car();�x.carNumber=1; Car y=x;�Console.WriteLine (x==y);

� � VB كود

Dim x As New Car() �x.carNumber = 1 Dim y As Car = x Console.WriteLine(x = y)

� �

�S��D'� ��א\1��� ��� S��3 True'�א �2��Nא W���'.�:�،�א\ZOض�אن��P'ن�א�n����S�o� False ؟؟؟�

]1I���1�א���WSن�� .� �

��RV �� S� Equals'�����+$אم�א\��K3א�KLא�� ��7Q�1א�� :� �

� � #C كود

Console.WriteLine (x.Equals(y));

Page 123: خطوة بخطوة مع فيجوال بسيك دوت نت

123

� � VB كود

Console.WriteLine(x.Equals(y))

� �oQ����� ���U Classes �5א��+$אم�P>�،�==� �� ���� �KPTאMQא :� �

� � #C كود

Console.WriteLine (Class1==Class2);

� � VB كود

Console.WriteLine(Class1 = Class2)

�؟ �U��F� Trueא\^�ل�א �����،��f����KS\�ذא�PQ'ن�א �2��NدאC Equals �Fjو �

��C��Sع�'s'\א�אWk���71N\2 א����%9א��N Wא���ن�א�iא��W אن� ON@�א\�Pن��UאTQن��Nj�P ��+���4אن�א

True�KPT �� � �� : א

� �� ZONض�א\^�ل�א�،���Rbא�WSو :� �

� �

#C كودCar x = new Car(); Car y = new Car();�x.carNumber=1; y.carNumber = 1; Console.WriteLine (x==y); Console.ReadKey();

Page 124: خطوة بخطوة مع فيجوال بسيك دوت نت

124

� � VB كود

Dim x As New Car() Dim y As New Car() �x.carNumber = 1 y.carNumber = 1 ��Console.WriteLine(x = y) Console.ReadKey()

�S��`��N � �����אن�א�j�V*�א $א��Fk����Iوא�$P�� False ... ،�i'ن�א�� �KPTא���� �: א�����P��KLدא �

#C كودbool isthesame(Car c1,Car c2) { if (c1.carNumber==c2.carNumber) return true; return false; }

� � VB كود

Private Function isthesame(ByVal c1 As Car, ByVal c2 As Car) As Boolean If c1.carNumber = c2.carNumber Then Return True End If Return False End Function �

FD�U�G�����N��' �3�5Pذא�K ؟�q�\�53א�i$Q$%��+��� �

C$� �����+$م�3�Lא�lWS�U Clone � �� �KPTא�� :� �

� � #C كود

Car doCopy(Car c1) { Car newCar = new Car(); newCar.carNumber=c1.carNumber; // // return newCar; }

Page 125: خطوة بخطوة مع فيجوال بسيك دوت نت

125

� � VB كود

Private Function doCopy(ByVal c1 As Car) As Car Dim newCar As New Car() newCar.carNumber = c1.carNumber ' ' Return newCar End Function

�b�N� �א 53� ^�� U � �א $א ${� � Clone א�����9 �א ،� ��sאZ!א� iH'V�� i3'%'د�J!7�T3���g%א' �א 53�

ICloneaple 3א�����N��' � ،i�,�� ��+$אم�3�i�S�%�� �א $א lWS�$`����47��5'م�� �א �JOClass��F.و�g.�7�,���� �א $א $`��!� �7��� �א �JO �א 53� Clone �g��4�� �7'م� i3'%'د ���r�� �א��P�b'ن �JO �����n�Dא

KFD�53���JO ������7،�����Q���0�1א�3��+$م� �אQ��\א Clone i�,��3��k .�� �

11. Nullable Types

א�hא ����Q$��7�$�אq�\א�f�D�U�F�7 Null �. א��� '�73����53'ع �q�\�!�، Boolean �'�d3^ ��$��9אن�n�D True وC False q�\א�، Short و���OV وWPSא�،��U...��3^ ��$��932767אن�'�d��n�DאH.�م��Y���3א

�����Y� ^3���VN ��. reference ����53'ع��null g ����0�1א������Xא String �F�7 א ���7א �

�71N3�q�3�KFd���1ن�Mن����� ��U��NNP���א9 Boolean ��F�.)�F�.�9�−� Null(� �5QHد�.����Nא��nN�}

،�א���aא3^���ذ ����Sא\���PTא ���Q$��7א ��t'א%:�א��C False ���43�Gو �n�D True����F�!�$Q$ذא���ن$D�7 .'א ��D$م�אد�Iل�א\��+$م����U�h����� �5��K7אP� ���3�K7و�U��F)ض)���3وج�ON אن�א\��+$م� ،�و

ªO�d�K7Lא�K(���� �Lא�lWS�U�،�:3$D�53��%��3و�*+T ،�وS'�����3ن�Q����م� d�_ �F�7� null$د��'ن�אKFD Check���� ��gא��n�D Null א�U��g�sو�K����53'ع .q�3 bool ^3 .� �

iHא$b9�5و�03אP 53�����^ 7��Kא net framework �F�7. א����F�� �*V��q�3�oQ��ن���P39�����bא null

� �� ����7א������9 :�،���U��Fא\^�ل�א��!�sא :� �

� � #C كود

bool? ismarried = null;

� �

Page 126: خطوة بخطوة مع فيجوال بسيك دوت نت

126

VB كودDim ismarried As System.Nullable(Of Boolean) = Nothing

� �

lد�Nא���NNP>�� �Lא�lWS�U ,��3��F�.�iz�7א �S��� �Lא��F�7 ������hدون�א ��53���7'ن�א � �i$D�.�53�i� NullאK�7Q�q�3�oQ��� �A�Iق�א���i$D�¤�NS Null K^3 �MQא��� �� �: א ��7Q�1א �

#C كودNullable<bool> nullableBool = null;

�����אن ? K �H�V�I��א���!��S generic nF�\א System.Nullable<T> D�f���N���3�'Sو�،n� �U�l�N�3

X��P �. C%�א�z.�د�53��3א �

�7Q�1 '�אHد�������oQدא ��PQ'ن�אل و�ON@�א��F�! return �k Nullable � �� �KPTא���� �: !��P'ن�ذ �

#C كودpublic bool? functionName()�{

}

� � VB كود

Public Function functionName() As System.Nullable(Of Boolean) End Function

Nullable خصائص ال .11.1

���ن nullable ��b�I��S HasValue אj�VI��S*�אل ��ذא �F�!د�$��t �אم�א�:��ªO�d وא �F�.� :��q�\א�F�7� Null � �� �KPTא�� :� �

#C كودif (ismarried.HasValue) { }�

� �

Page 127: خطوة بخطوة مع فيجوال بسيك دوت نت

127

VB كودIf ismarried.HasValue Then End If

� �������g������5P>��MQא���H�7\א�Kjو!=�+$אم�و��C <> U � �� �: א �O`'אل�������� �KPTא �

� � #C كود

if (ismarried!=null)

� � VB كود

if ismarried<>nothing then

� � مالحظة

في السي شارب null خاصة بالفيجوال بيسك بد~ من nothing ~ تنس أن

” ؟؟“المعامل .11.2

�K3��\�5א��+$אم�אP>���7אل ��و%'دnullable X��S ؟؟��03א���U��3��F�.�0s'��l4µ��P null ض�ZON �،

��א �وאج�� א �����،�و�ZONض�אن�א�,+*�_�����7Qد�Iل�������hא �وאج�!g'�,+*�א�nN�}�X�Dאن 3^�ل�

��V����F�7 ���53א%�Kذ � False א�� 3��,�7N��،�i'م�������Pא P'د�א :� �

#C كودint? ismarried = returnvaluefromdatabase() ?? False;

� � VB كود

Dim ismarried As System.Nullable(Of Integer) = IIf(returnvaluefromdatabase() Is Nothing, [False], returnvaluefromdatabase())

Page 128: خطوة بخطوة مع فيجوال بسيك دوت نت

128

� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �

� �� �

� �� �

Page 129: خطوة بخطوة مع فيجوال بسيك دوت نت

129

� �� �

� �� �

� �� �� �

� �� �

البرمجة الفئات ومقدمة إلى

ائنية التوجهك �

� �� �� �� �� �

الباب

8

Page 130: خطوة بخطوة مع فيجوال بسيك دوت نت

130

Page 131: خطوة بخطوة مع فيجوال بسيك دوت نت

131

Classes مقدمة إلى الفئات .1

��� ]TN\�23��4א �!¦ن�א ،� �7��� �א �Nو�Hد�U� �N(�9� �F� Console Application���i$��وא �J!�n�D�'�d����� l�F�3 class Program دوאل�n�D� �g�Iא$��'�� � א�hوא%�אzא�hو��قq�3و...���N� �!� ��Uא 'א.0

3��د¨���1Q�23������������9א OOP �'S�JO �. Class א

i$D�n�D�23��4 ����!h�Jא�i$D�n�D��MQ��'�א ���JO،�و<�5Pאن�!�5P> h�Jאن��d'�א�H�� ���U�،�:�Iא$��U KFD Class �!�sא��NP>�KVON3 New Class 53 Project .�

�oQ������Q�JO ��Uא ���,�C�XHو�{}����Y��:���'P3�oQ و����53א�:�،���F� Class ��Qא]`'ز�����i+$אم�א Pאn���oQ��� �א ��B�$���53 End Class�U VB.net � ���دHאج ��7N'م ،�J!$Q$%�ig�F�و�������� Person �،

iH'V3'%'دא���� �� �: א!ZאN� ��s`$�א P'د�א �

� � #C كود

namespace ConsoleApplication4 { class Person { } }

� � VB كود

Namespace ConsoleApplication4 Class Person End Class End Namespace

� �

�אل �א�ول�א W�d$د zא�� namespace � 0�Bאن�� ����WS�c�Qא� ،�Hو�s�h�JO �א\'%'دClasses�iא Wא�� < namespace �Q¯H��gNP����O@�אل�،��Iא���gM���03�K3��� �I�53 ل�iא�$Q$א �53�5PF�N�JOא

main U��N���bא�� �JO ��. Program ��א\��l�Fא����9א �

Page 132: خطوة بخطوة مع فيجوال بسيك دوت نت

132

�C�h��'P3�a�א���J!Class� �وא ���Fدא�KIאIא���9א�ول�وא��h�������!�s3^ �א��NNP>�،�hאq�\א��S��JOClass�� �� �KPTא�� :� �

#C كودclass Person { public string FirstName; public string LastName; public int Age; }

� � VB كود

Class Person Public FirstName As String Public LastName As String Public Age As Integer End Class

h�Nj���i$D�oQ����5P>א�ن� Objects WS�53l ���JO ^3א�� �KPTא��� :� �

دكو C# Person Ahmed = new Person(); Ahmed.Age = 15; Ahmed.FirstName = "Ahmed"; Ahmed.LastName = "Gamal"; Person Ali = new Person(); Ali.Age = 15; Ali.FirstName = "Ahmed"; Ali.LastName = "Gamal";

� � VB كود

Dim Ahmed As New Person() Ahmed.Age = 15 Ahmed.FirstName = "Ahmed" Ahmed.LastName = "Gamal" Dim Ali As New Person() Ali.Age = 15 Ali.FirstName = "Ahmed" Ali.LastName = "Gamal"�

� �� �

Page 133: خطوة بخطوة مع فيجوال بسيك دوت نت

133

CKP,�n�D��gOQ����5P>و� �KPT ����!'OV3� �� �: א �� �

#C كودPerson [] MyEmpolyee = new Person[3]; MyEmpolyee[0] = new Person(); MyEmpolyee[0].FirstName = "Ahmed"; MyEmpolyee[0].LastName = "Gamal"; MyEmpolyee[0].Age = 15;

� � VB كود

Dim MyEmpolyee As Person() = New Person(2) {} MyEmpolyee(0) = New Person() MyEmpolyee(0).FirstName = "Ahmed" MyEmpolyee(0).LastName = "Gamal" MyEmpolyee(0).Age = 15

� ���Fאلذ������� ���U� Struct ن¦!�، �KIوאل�دא$ Class��Nא ��N��P3����JOא�oQ�����MQא�$����� �،��7N'م�����4دא �א א��9�� P���،�Y�3�*+T'ن��� �KPTא�K3�P :� �

#C كود public string getFullName() { return FirstName + LastName; }

� � VB كود

Public Function getFullName() As String Return FirstName + LastName End Function

Page 134: خطوة بخطوة مع فيجوال بسيك دوت نت

134

Constructors يداتالمش .1.1

oQ��7���3'م���$ND new Person() אل�� ،�و��Sא $א ��א Constructor�t !¦ن�WSא��c�Qא�7���N'م����K�qTא $א

0sو� �NNP>و��� �I�� ��P'ن��lWSא $א ��sאZ!א� ،�23��4 �א �K�qT��03�KF�� �tא���+���53א �g�!� ����א9وא�3 ��ض�3^ �،��+���z�Tو.��א���g%���z�T������4§�� ��H� �53�i$Q$%��+����JO ��:�Classא �

#C كودpublic Person() { Console.WriteLine("new object"); }�

� � VB كود

Public Sub New() Console.WriteLine("new object") End Sub

� � مالحظة

سك فيتم تسمية الدالة بي ، اما في فيجوالالفئةفي السي شارب يتم عمل دالة بنفس اسم New باسم

7��Kאل��Qאن�� �MQ�5אP> Constructor hאZ�3Hאل���K��� ^F!� ،��Constructor��03א�ول�� 7��Kא��9��Q

oQ��� � �� �KPTא���� �: א9و´��Pא�$!�،�$Q��P'ن�ذ �

#C كود public Person(string userfirstname) { FirstName = userfirstname; }

� � VB كود

Public Sub New(ByVal userfirstname As String) FirstName = userfirstname End Sub

� �

�N��D�G%'����i$Q$%��+���KF� � و�� �: ������א P'د�א �

Page 135: خطوة بخطوة مع فيجوال بسيك دوت نت

135

#C كودPerson MyEmpolyee = new Person("ahmed");�

� � VB كود

Dim MyEmpolyee As New Person("ahmed")

Destructor مهدماتال .1.2

b9�، Beep � ^3$א���Q�، Object h'b�Hא� ق�WSא�א�03�E$Lא��z�gא��+$אم�אل PD Constructor@�אل23��4 �: �03א��z�gא �

#C كود~Person() { Console.Beep(); }

� � VB كود

Protected Overrides Sub Finalize() �End Sub

3$�א � Destructor 5j�P���53�$�Oאل��K�.�h���F� ���ج����3��� 3�e��،�א������W�ON��U�Object��3�����א�Wkא �g,9א� �א��9+$אم 'Sو� iא��W ��Uא :�� �1��א\�� hאq�\א� 0�B ��q� � �א��+$א3: 5P>� �MQא� ،� E$Lא

�53�¢�N �. ��J! N��3א �$אدא3�h^ �وא 7��t'م���$�א �� �

2. this

iא]`'ز��F�P �'gO3���s'م�א this د���'�N��،�XH�,��� 3��,��i،�وא W� �Uא����� א\^�ل��Uא $Hس�אKF���:�!��NF. Constructor � �� �KPTא�� :� �

#C كود public Person(string userfirstname) { FirstName = userfirstname; }

� �

Page 136: خطوة بخطوة مع فيجوال بسيك دوت نت

136

VB كودPublic Sub New(ByVal userfirstname As String) FirstName = userfirstname End Sub

� �

�P'ن '�א!��NsZא�ن�א�7N���N'م�Z�3H�� �א���א�q�� FirstName ^3�� �� �KPTא�� :� �

#C كودpublic Person(string FirstName) { FirstName = FirstName; }�

� � VB كود

Public Sub New(ByVal FirstName As String) FirstName = FirstName End Sub

�gO��� o� � � �Lא� lWS� U K�{� �א�� ��Q��3'P ��� FirstName א �(NQ� 5 �و ،� :�O�� �Q��و Z�3H�� א

FirstName���P´�5א9وFs�q�F�� �א\'.q�\אن�א� $V7����¦�� ��Q��3'P ����oQא�P´א9و�Uد�'% =

�F�P �א ���Z�3Hא\��N��K��+$م ��� C Me U VB.netو #this U C אT���t �א\'%'د��U وאq�\א� �Lא��P´א9و :� �

#C كودpublic Person(string FirstName) { this.FirstName = FirstName; }

� � VB كود

Public Sub New(ByVal FirstName As String) Me.FirstName = FirstName End Sub

t �א �7��� �א � �Lא�U�n���!¦ن�א��+$אم ،����� ��Uא $Hس�א �k� �N.�1��this��a�א�� ،� �Fjدא�G��N3ن�'P��X�� ���b�Nא\'%'د�U�iא9و´��Pو.��א �WN3���4א �R)��א t א�����Fj�.�H�g&א�'S�� �.�g�!�G�P�� this ذ

Page 137: خطوة بخطوة مع فيجوال بسيك دوت نت

137

tatic S التعرف على .3

� 9�)�U��Nא $א main م$+�����N�23��4א� א�U C# �S�&�N\��!�sאل static א �F�P א\'%'د�iא����U��א

Sharedאل��U VB.net �F�P �؟ ،�!�lWS�nN�3��Fא �

�F�P �אو�א $א ����Qא h�JOאو� وא �5P>�tא��+$א�03��g3א $وאل static אq�\א�אWSאن��c���hאq�\א�n����אو�n�D�53��kل�'b' 3��,��iو �@�3�53���A'אل 3 Class���A'אل א object Xא��ص��� �� ZONض�א\^�ل�א�،

Person:�� �

#C كودclass Person { public string FirstName; public string LastName; public int Age; static public int counter; }

� � VB كود

Class Person Public FirstName As String Public LastName As String Public Age As Integer � Public Shared counter As Integer End Class

� ��Nض�א�ZON ��3^ و�� ���Nא P'د�א�� :� �

� � #C كود

Person MyEmpolyee = new Person(); MyEmpolyee.Age = 15; MyEmpolyee.counter = 3;

� � VB كود

Dim MyEmpolyee As New Person() MyEmpolyee.Age = 15 MyEmpolyee.counter = 3

Page 138: خطوة بخطوة مع فيجوال بسيك دوت نت

138

PQ�5'ن�WSא�א P'د�o� ����אن �،��R�Rb counter q�3�'S static �A'��3�n�D�i�,��3�:�zא�����.�אW و��JO � �Classא�� �KPTא�� :� �

#C كودPerson MyEmpolyee = new Person(); MyEmpolyee.Age = 15; Person.counter = 3;

� � VB كود

Dim MyEmpolyee As New Person() MyEmpolyee.Age = 15; Person.counter = 3;

� �

oQ������NF.�' Object @O��53�$Q$% �JO ���JOClassא�����b:��53دא�KIא �counter �،�و.���NF��ض�.���Fאلא� �gא�� $`N�33�i�,�� q�\א� �ذ ��אن ،�static� �3�n�D���A'א :N3� i$��وא �+���oQ���� ��Q� �JOClass�0�F��h�Nj�P �. א ��object��:N3��g�FD���Q�tא �

iد�O��9א�n�Dא 3^�ل�WS�53��S]TN��t �lWS�53א�����b�I��S���bא �$אدא�h،�وא 7��t'م���$�א9و´�P@�א

��: �U� Destructorن!���0M���F'د�א Constructor�V7N אل!���0MN��،���Uא P'د�א��JOClasss9א �

#C كودclass Person { public string FirstName; public string LastName; public int Age; static public int counter; public string getFullName() { return FirstName + LastName; } public Person() { counter++; } ~Person() { counter--; } }

Page 139: خطوة بخطوة مع فيجوال بسيك دوت نت

139

� � VB كود

Class Person Public FirstName As String Public LastName As String Public Age As Integer Public Shared counter As Integer Public Function getFullName() As String Return FirstName + LastName End Function Public Sub New() counter += 1 End Sub Protected Overrides Sub Finalize() Try counter -= 1 Finally MyBase.Finalize() End Try End Sub End Class

� �

�: ��h�Nj،�و7�����53'م����ض�.���Fא �$אد���D�z�T$د��53א P وא�ن��7N'م �

� � #C كود

Person MyEmpolyee = new Person(); Person MyEmpolyee2 = new Person(); Person MyEmpolyee3 = new Person(); Person MyEmpolyee4 = new Person(); Person MyEmpolyee5 = new Person(); Console.WriteLine(Person.counter);

� � VB كود

Dim MyEmpolyee As New Person() Dim MyEmpolyee2 As New Person() Dim MyEmpolyee3 As New Person()

Page 140: خطوة بخطوة مع فيجوال بسيك دوت نت

140

Dim MyEmpolyee4 As New Person() Dim MyEmpolyee5 As New Person() Console.WriteLine(Person.counter)

� �

�وא�ن��� '�א!��NsZא P'د�א :� �

#C كودPerson [] MyEmpolyee = new Person[5];�Console.WriteLine(Person.counter);

� � VB كود

Dim MyEmpolyee As Person() = New Person(4) {} �Console.WriteLine(Person.counter)

��Gאن���95'.�0אن�א P���2��N'ن�� �وא ،�:�)�U�@� ���.'��o� � ،� ¢���53� �Qא MyEmpolyee ���Q�_ ������53��S����1א �2��Nא�� ��א�Lא،�$���lz�T�5 :� �� �

#C كودPerson [] MyEmpolyee = new Person[5]; for (int i = 0; i < 5; i++) MyEmpolyee[0] = new Person(); Console.WriteLine(Person.counter);

� � VB كود

Dim MyEmpolyee As Person() = New Person(4) {} For i As Integer = 0 To 4 MyEmpolyee(0) = New Person() Next Console.WriteLine(Person.counter)

� �

3.1. Static Class WN3 .net framewrok 2.0 C$�Static Class �$��9 ،�و�1�����א�Lل�!¦ن�C Static Class אل ��א�F�Dد�3

hאq�\�0א�Bن�'Pوאل�!�:���53'ع אن��$ �@��53א\static oQ�����71N وא�:�¦!�� object ،�א����osذ

��. New �����+$אم��JOClassא WS�53א �

Page 141: خطوة بخطوة مع فيجوال بسيك دوت نت

141

��<�5Pא��+$אم�Lא�lWS�U 3��,��i،�א���aאWS���^3א�אل��JOClassא�� Class���S MessageBox �ودوא

5P>�t 3��,��iدون������oQ��gN3��+ وא��g3א��+$א .� �� �

#C كودMessageBox.Show(“Welcome”);

� � VB كود

MessageBox.Show(“Welcome”)

OverLoading اعادة التحميل .4

3��د¨�אل��S�53א OOP אل�¨$�3����1���S Overloading 5P>�����، �@ONق�אو�دوאل�����i$D���F����Z�3Hس ��Uא�q��¤�NSא��3���9دאم� .� �

�: �U Windows Formsאل ()��S MessageBox.Showدא � Overloading א��3�a^�ل��h���FD�n�Dאل �

$`������%�' �: �lWSא�وא3��3^ �

كودMessageBox.Show(string text) MessageBox.Show(string text,string caption) MessageBox.Show(string text, string caption, MessageBoxButtons buttons)

�5Fs��MQא��S���5D�iHدא ����b�Iو��kאوא�K��،��3وא�$7iو�D��gN3� C$�3�5PQ�_�' �H'V�N O�����B@�א���9،�

Overloading�����P ��1MN���N��،3'%'دא� � �� �: دوאل��� �KPTא �

كودMessageBox.ShowWithString(string text) MessageBox.ShowStringAndCaption(string text,string caption) MessageBox.ShowStringAndCaptionAndButtons(string text, string caption, MessageBoxButtons buttons)

G��Q��3א�WSא���9،�و�@ON�����B��S${א��9+$אم��K�g�� ��א��9+$אم ��3Cא�ن�و'g� .�� �

Page 142: خطوة بخطوة مع فيجوال بسيك دوت نت

142

3�$�Cאل����1� OverLoading U �� �� ��Yא���� �����Fא��U� ^3�0F−دوא ��<���������NP'د��� �KPTאKS�H$��9 ���Uא�H�>��JOClass��53'ع���.� int אو���53'ع double - :�� �

� � #C كود

static int Add(int x, int y) { return x + y; } static double Add(double x, double y) { return x + y; } static long Add(long x, long y) { return x + y; }

� � VB كود

Private Shared Function Add(ByVal x As Integer, ByVal y As Integer) As Integer Return x + y End Function Private Shared Function Add(ByVal x As Double, ByVal y As Double) As Double Return x + y End Function Private Shared Function Add(ByVal x As Long, ByVal y As Long) As Long Return x + y End Function

�i�3�i�P ���Gא����ج�א\��+$م�،� '� �03�A�IC Constructorאل <�5Pאن����$�א��gN3د�$D�KFD��NPF�!�،

��$D �N �^\ Person אل�oQ����5P> Constructors �� �� �KPTא�� :�� �

#C كودclass Person { public string FirstName; public string LastName; public int Age; public Person() { Console.WriteLine("c1");

Page 143: خطوة بخطوة مع فيجوال بسيك دوت نت

143

} public Person(string fname,string lname) { FirstName = fname; LastName = lname; Console.WriteLine("c2"); } public Person(string fname,string lname,int myage) { FirstName = fname; LastName = lname; Age = myage; Console.WriteLine("c3"); } }

� � VB كود

Class Person � Public FirstName As String Public LastName As String Public Age As Integer Public Sub New() Console.WriteLine("c1") End Sub Public Sub New(ByVal fname As String, ByVal lname As String) FirstName = fname LastName = lname Console.WriteLine("c2") End Sub Public Sub New(ByVal fname As String, ByVal lname As String, ByVal myage As Integer) FirstName = fname LastName = lname Age = myage Console.WriteLine("c3") End Sub End Class

h�Nj���z�Tא���NNP>��7Q�1 �� و��lWgא�� �$�א �1ق�א]� :� �

#C كودPerson MyEmpolyee = new Person(); Person MyEmpolyee = new Person("ahmed","gamal"); Person MyEmpolyee = new Person("ahmed", "gamal",22);

Page 144: خطوة بخطوة مع فيجوال بسيك دوت نت

144

� � VB كود

Dim MyEmpolyee As New Person() Dim MyEmpolyee As New Person("ahmed", "gamal") Dim MyEmpolyee As New Person("ahmed", "gamal", 22)

Access Modifierمعرفات الوصول .5� �

public ��N ����+$א�U 'S�:3دHو���Nא �����7،���ن��f��3א 'b'ل�אZ!9א��sא W��7'م����Qא�WSوذ�����אن��،�WSא �Cو � �א $א lWSل����'b' אq�\ل�אلא I�53� i�,��3� Object f��\א� �N3$+א��� ' � �N��� �MQא� �N�.� ،

Private� �א KIدא� 53� A'�� � �א $א lWS� �אو q�\א� �WSא �Q¯H� 53� 5PF��� 5�!� �JOClassa7!� :�O��

�. א\+����Oوא �Oو.�WS�U �gN���hא�א $Hس��'�n�D�f�����fא�'אع��h�!��3א 'b'ل �

Public: b' �א\���fא ��WSא����Q�53אل�q�\א� �Cو � 3��,�Object i 'ل����א $א �$���,��7ق�אCم��.� ' � �MQא� ،��JO

Class� �5 !� public K���lWS�$`א $אPFو����S��F� objects . �א�$Q$�א 'b'ل��53��JOClass�kא

Private :

KIدא�:�Q¯H�a7!�5P> : Struct �אو�אل��JOClassא I�53�:OQ������W . א

� �

Protected: �. �א\��JOClass��Tא و �5P>�5Pא 'b'ل��5P>�9 Object 53��kא 'b'ل�א\��,���53��kאل �

internal: � �Lא�����. !�5P> a7א 'b'ل���kدא�KIא�9 �

protected internal : �'b'ل�I�53��k ل���o�3�@Oא�5P>��JOClass �9א 'b'ل���kאI�53��MQ ل�א��!�sא���T\א��� .� �

� �

Page 145: خطوة بخطوة مع فيجوال بسيك دوت نت

145

OOP ساسية فيعناصر االال .6

3��د¨�אل���1��t �0 �h�qא ���4א�B OOP �7طN� �� �$��9אن�����ض��� �: א ^ �Eא �� �1. Encapsulation� �2. Inheritance� �3. Polymorphism� �

6.1. Encapsulation :

���ل $V7Q Encapsulation �sو� z�OIא� 'S א�U� �SH�g&وא� �O��+\א� ������hوא��'אد ��n�Dא �F��+$م� �Q�gN KP, Black Box ����، ������ ،��Uא 'א.S��3��FgQ�9�0'�א P'د�א\'%'د �U�$`�� PrintReportא ��Q�gNدא

�QH�7� ����Dא��� $��Qدא�KF�� ��Sz�D$א�����OPQ�����،��g�Iدא .� �

KF� ��א���U���bא���lWS�53��MQא�$�O��� א�� �Lא�U�،وع��T\א�n�D��D�Fא�X'�����KF� Structured

��03אل ��`$��0�Bא P'د��P3�Uن �א�3 ،�$�!��P'ن���53�z�%�Kא ��U OOP �KFאل Encapsulation وא:�O��n�D��7�q3 �Q���5D���� א ���O��� �KF،�وWSא�Q��3����U��S�Objects G�����K�g و���Qא �'א��gN���Kbא

z�1Iא��f�Tא���K�g���، .

� �

6.2. Inheritance :

i$Q$%��+���KFD��g��$V7Qא���،�وH' ���'�Vj�VI�@O��n�D:��53א%C��S�Q'1��Kو���$�53��JOClass�KQא Cو�א ZONض�،�*j�Vא����� ��NQ$ �. '�d��n�Dא���א ����iHو��3��J!Class)�iH����( ^3��g�Nb�¢QH^ �אن� �

�KF���7م�� ����Hא�hאل��J!Classوא�ن���Q$�א� BMW �،� ^3�KF��53א�1[�אن��7'م���� �Lא�lWS�U��J!Class�

0�1�����NNP isSport �03אCar ��b�I��!�s �א\��53�$Q$%���JOClassnFא ��J!Classא,��7ق� ��k�KVON3،�و

� � �JOClassF�\א�l� BMW f$kא� ���Yאل ، ��ZT3�*j�VI�$`N�� �Nא��� �אل�Car �53ذ �אBMW ��MQ و ،�!�s9��3'Q��1MN� �J!�K GMC ��ZT3�h������n�D�lHو$��'�R���W �. وא �

Page 146: خطوة بخطوة مع فيجوال بسيك دوت نت

146

K^3�$Q$%��VND��!�s��� �NF.�' ��Iא��G�� �KPא ���Hאcountofdoors ،�h א �0�B�U�KQ$�� !7N��Kg'م���

h�JO ��.�KF����NFא,��7ق��53א���U�،��JO 1����א ��$Car h Q א� �a7!�:�!�KQ$�� �. !¦����N���0�1א �

Sא���g(��9��}H�U���Fh�JO �`�א�K�§�0�1����5P �iوqV �����h �א ��53א� ��و%'د��������U�i$j�O �. א � ��Q �. � ����אن �oQ��� Inheritance ���� is aא�، BMW is a car و%'د�� ���U��MQא�، �J!ل��P, ��J!و�A�IC3^ �!¦ن�i�jא$� ��Circle is a shape.�� �

�h�. � ���aggregation و��has a �����nF و�Y� Classes �. D��Sאل�NS¤��'ع���53��Iא�Lא�lWS�U�،

'�א�و��n�D��JOא ��(�'��Qא ^���א P�JO'ن��� ^3� ،� � �NQ$ �����!���Jن� iH��� ،� Wheels ��53א%�h `D�Kא �.P���Car has a wheel'ن

6.3. Polymorphism:

3�53��د¨�Iא��C$��S�G'�א%��Implementation��H ��$ون�א���$وאS �����P��J!k'�א �OOP v�F א\� ،�وא

�א��KF��� implementation aא ���JO,��7ق� א�3��+$م�7Q'م ،�z��9א�:��T��5FMQ� 3^�ل� �lWkא $وאل�{��� ~�n�D��J!Classذ� Shape � �� �KPTא���:OQ�����NNP>�����، :� �

#C كودclass Shape { public void Draw() { } public void GetSize() { } }

� � VB كود

Class Shape Public Sub Draw() End Sub

Page 147: خطوة بخطوة مع فيجوال بسيك دوت نت

147

Public Sub GetSize() End Sub End Class

� � ���f��Qאل�Lא�lWS�U Class ���� Abstract Class �!'��، C# אل�C$�3��MQא Interfaceא���^��:�TQ�W وא

��Abstract Class �gN אل�U��g��D�f���N��h�.�03�5!�وP �. و � �U�JO ���P'ن��4א��������n�Dא�'אد�WS�JOא�א �����א,��7.:�53)�دא��J!�)����^3�،�0��3�،�i�jא �����!¦ن���Kא

��gN3�KP ��� .א ����و����Xא\��

KFD� 5P> אل� 4D� A�IC� �7Q�1��� �و%'د OverRidding ذ �� �F���א�U�f �I9א 03� 5P default و

Implementation .

� �

7. Encapsulation

�אل C$�3�f$gQ Encapsulation ������Iא$ �:�������H�V�Iא�z�OIא ��K�b�Oא�,�����W ��5Dא�J!�YDوאH�V�I���،�Y�4\א��.�� ��Iא\+�زن�،�و��iHم�9دא�(��5FM�Q�¶��)ض��)�م�ZON �$Q$,�53�� ������V،�و��

K%א h�����. א\ �

�אل C$�3� ¤'D$Q� � �Lא� lWS�U Encapsulation وאل�$ ��53א �D$د�($د �(N �א lWS�53� $� �P'ن� �KPوא �$I'ل�وא��وج�53 h�����5 �N)��א ^ ���א �'א�P(��U� ^F!�،��k I�53�Kbم�א\P>�t }$� WSא�א N)�م�وא

)h����3����FD��!�sא�)�(��!�sא�h�QZT3�)�(��VI�...�(א$%�iود$)��D'F��Uوאل א��$ �. �53א �

�!�sא�K^3����FDאن���(�9�' ����� �$�]� ������hوא 3����H'����G�1���hא��53א�وא�i$D�.���!�5FM�Q�،��3א����FD������hא\$��R�Rb���Iوא �[�$��53و%'د�א ���FPو�5Q�§����53א i$D�.�U�2��N �53אن ����� א ��g��F{���،�hא

����4وא%�h�gא\��+$م����א��+$א�U �53�9$��:3א ��3C�KP,�n�D��Q�gNوא�$�7Q'م�ز����3א���Iא W�7Q'م��NO �. א q'ص��lWS�K��Uא ��K�b�Oא �

KF���t 9�)��،�WS�$�OQא�א\'s'ع�א�,+�ص�א��F� �¤د'���gO � �5א�'ن��1M3א�����h�D'F��Uאو�9،�

PQو�K3�P ��o���f�Dאن�א�c�O �:�����Q��3C�K�����א�����F��،���3�K3אن�א P'د���P'ن��S�KP,�n�D��FFV3م�

Page 148: خطوة بخطوة مع فيجوال بسيك دوت نت

148

53� �D'F� K�7Q� �3� 'Sو� �'b'ل����CHس�א�kم�a7!� P���5P'ن�ز����3א\�234.�دHא� ،� ��53 א�وא�3 א^�������Q���5D��gא�1[�53� א���א���53��bאq�3��Fd��F��،�z�1I5א\�4 א�Q�Iא��Y .� �

WS �����h�qא�א\gO'م�א W���ول�אن�K��� �:�b'� OOP �7ط�N 1����WSא�א\gO'م��NS¤�א �$�53�$Qא� ،�و

t . ��1�Nق�WS�U��kא�א $Hس א

� ��،�Kbאن��'א�K�.C�17ول�� ��NSذ�U��g�M�$��9אن��C+$م���א\�'S��I��2343�¤�NS3^ �...�����2343و�nN�}

�. ��`��53�zא\�Tوع��JOא و7Q'م�ز����3א\�����234+$אم�7�����J!�WS'م��4 א�� �

private متغيرات للوصول إلى public استخدام دوال .7.1

� �� �: א W��3�i$D�lz�T�����NF.א3�n�D�h���A'א $Hوس�א ���Vx Person �7'ص�אل ZONض�א\^�ل�א �

#C كودclass Person { public int Salary; }

� � VB كود

Class Person Public Salary As Integer End Class

�������T��h و�ن�ز����3א ���U��Qא ��Q�Oא��ص���د�Iل ��−�و%Q�9�53�K�g'�−����א�� �: �.�م�������Pא����Fא �

� � #C كود

Person Ahmed = new Person(); Ahmed.Age = 999999999999;

� � VB كود

Dim Ahmed As New Person() Ahmed.Age = 999999999999

Page 149: خطوة بخطوة مع فيجوال بسيك دوت نت

149

�'א.�0،�وא��a و '�אن�א �Wg���.H�U�'gא�X�.א�z��,א�U���PT\א�lWkض������$.��NNP �،�K�R��3�:�,�$�Q��`Lא

3��,��i،�و�Uو%'د�3��+$م�� ��g�� '�א�:�7Q'م���7א�izא �53��F�7א\��+$م��� !¦ن��K^3 - ��@ - �53ذlWS ������. א\$�3C�$���h Iא�� �

KI$\א�אWS����� �K%�� ��Gא �H�3$א����JO� g�F����F.�W ��F��،� ��}Hאن�ز�h�,�,�2343����3א9د�Iل��א

53��7R� �א �א�3 ����� z�ND� :�O��o�PQ�5 ،� �Fjא$ �א �R�VN ��[���א Wא� א����53א )�H'g �א9د�Iل�،q�3� 0N3א��g3$+��\−��Iא\�234א��−�g�z�7א � �و��gN3�9$��0sدوאل��� �KPTא����g� ������P �: אو�א �

#C كودclass person { private int Age; public string SetAge(int x) { if(x>100 || x<1) return "you can't edit age like that"; Age=x; return "done"; } public int GetAge() { return Age; } }

� � VB كود

Class person Private Age As Integer Public Function SetAge(ByVal x As Integer) As String If x > 100 OrElse x < 1 Then Return "you can't edit age like that" End If � Age = x Return "done" � End Function � Public Function GetAge() As Integer Return Age End Function End Class

Page 150: خطوة بخطوة مع فيجوال بسيك دوت نت

150

�����hאq�\א���F��� ���� x �F�� �1I�'S �7���� �N7Oא�� �دא ،� Set ^3�� �� ���qאن��[�WIא �KPTאNQ�−��� وذ*j�VI�53��NF�����F��� this وC Me � ��:−�����Uא $Hس�א �

� � #C كود

public string SetAge(int Age) { if(Age>100 || Age<1) return "you can't edit age like that"; this.Age=Age; return "done"; }

� � VB كود

Public Function SetAge(ByVal Age As Integer) As String If Age > 100 OrElse Age < 1 Then Return "you can't edit age like that" End If Me.Age = Age Return "done" End Function

� ��$و� ��א����3 �אوQ��}H WS�K^3�:NP �،� Q'�5P>�9��Q'������7��$����Q$�0א�QH�T\א�U�H'3א��l �z�Nq��9א

��gNDg7'ط�����U�G�����$.��a����]1I�G����YQ 3�i$D�o�PQوع��T\ .� �� �

مالحظة . Mutator فتسمى باسم SetAge أما الدالة Accessor يطلق عليھا اسم GetAge الدالة

:ctor Construال ارسال القيم كجزء من .7.2

�NP>�A�IC��7Q�� �Q�F� �F��+$م���b�O �$�KQאو��03א ��7Q�1א �����7،�و��Sא�����א���g3א��+$א �hאZ�3H��$�T\�5אFs�hאq�\א���.�Constructor��U�،h�JO P���i'نא�P �א����D��3א��+$אم�א ��7Q�1א�و����� �א

Page 151: خطوة بخطوة مع فيجوال بسيك دوت نت

151

H'V���5 ��7����א���Q�1 אL�h)��א�z�Tא\��+$م��lWS�G��% 7Qאq�\א�K����.��Q�Fم���' Object �53אل

Class.�� �

�7Q�1 �: 3^�ل��lWSא �

#C كودclass Person { private int Age; public Person(int Age) { if(Age>100 || Age<1) return "you can't edit age like that"; this.Age=Age; return "done"; } }

� � VB كود

Class Person Private Age As Integer Public Sub New(ByVal Age As Integer) If Age > 100 OrElse Age < 1 Then Return "you can't edit age like that" End If Me.Age = Age Return "done" End Sub End Class

Page 152: خطوة بخطوة مع فيجوال بسيك دوت نت

152

: Type Property استخدام ال .7.3

5P ��gN3�KPدא ��ن �ON@�א ��7Q�1א �����7،�و���b�I����q�\א�KQ'��n�Dدא��F�Dوא�A�I��7אQ�1� : Set و Get�، � �� �KPTא���� �: ���������Qذ �

#C كودclass Person { public int Age { get { return Age;} set { if (!(value>100 || value<1)) Age=value; } } }

� � VB كود

Class Person public Property Age() As Integer Get Return Age End Get Set If Not (value > 100 OrElse value < 1) Then Age = value End If End Set End Property End Class

1����א�,�������zא��$��NP> Age z�Dא 'b'ل�א\��,���� وא�ن��K�.�5P � Set ،�و���Uو�، �z�,�G��53�:��Dل�'VLא����� Get KFDل�אو��Iא9د�h������53�$�]� ��א����Q��3�'Sو�، �h���FD�n�D�h���F� ����א

א�I9אج

�(�9���� �(9ن�א��Get �FS public ���b و Set אC��MQن �Lא�lWS�U�q�\א�@� Age �S א\�l�F)�و

Page 153: خطوة بخطوة مع فيجوال بسيك دوت نت

153

public�WN3�5P ���������P3א ��$�f��3�U�KQא 'b'ل�א��ص�net 2.0 X. ،�وbא Set אو Get �،�i$��n�D ^3�� �� �KPTא�� :� �

� �

#C كودpublic int Age { get { return Age; } protected set { Age = value; } }

� � VB كود

Public Property Age() As Integer Get Return Age End Get Protected Set Age = value End Set End Property

KFD�U�G�����N�� �Set KF אزא ��א��Read Only Property �NPF�! ��b �ذא�@P� �אHد�hא ' � �3C� ،

Write Only Property���bزل�א��]! Get א�א\^�ل�لWS�، Read Only Property:�� �

#C كودpublic int Age { get { return Age; } }

� � VB كود

Public ReadOnly Property Age() As Integer Get Return Age End Get End Property

Page 154: خطوة بخطوة مع فيجوال بسيك دوت نت

154

Inheritance الوراثة .8

�UدHوس� Encapsulation א\gO'م�א�ول ��b�ND�E ���kא������،�.OOP v�T���NF ���אنذ������UدHس����. �03���$D'3� Inheritanceאلوא�ن�����7،� �

W ZONض�א\^�ل�א �����א�،�KF� �$3�KF���C^�ل�����3�0�:�אNא�ن�� ���� ��l�Nא��ص����, :� �

#C كودclass Car { private string carName; private int carModel; public Car(string carName, int carNumber) { this.carNme=carName; this.carNumber=carNumber; } public Car() { carName="Unknown"; carNumber=0; } }

� � VB كود

Class Car Private carName As String Private carModel As Integer Public Sub New(ByVal carName As String, ByVal carNumber As Integer) Me.carNme = carName Me.carNumber = carNumber End Sub Public Sub New() carName = "Unknown" carNumber = 0 End Sub �End Class

� ��$Wg��Cא�N�KF� ����a،�و�����0א . �l�Q'1��n�Dو���I�:N ل��3א�WS�Kא�א $Hس א\^�ل�א

Page 155: خطوة بخطوة مع فيجوال بسيك دوت نت

155

a - is:تعريف عالقة .8.1

،���RNول�א�ن�,��vא N'ع�א�ول���has-aو.$��P'ن is-a א � .��.$��P'ن ���Fذ������Uא $Hس�א �����TD�0،�!¦نh�. � ��: ZON��،� BMWض�����j��iH���א א S��JO'���53'ع���א\7�Tא �JOوא W��c�Qאن� �53א �

� � #C كود

class BMW: Car { }

� � VB كود

Class BMW Inherits Car End Class

و�Car �@O �א�ClassXא '�d��JO�BMW �*j�VI�@O��n�D �אClass5�9א WPS��JOא�����0�1אن��7'ل�אن��5 ZONض public دوא :�و��.:�אلP carName �א���5�9ول�א 'b'ل�א\��,�����א�����bא JOא��a7! �U��N،�و

،�� �: WSא�א\^�ل��lWS��s'Qא �53�5PF���5�! �17Nذ �

#C كودBMW ahmedcar=new BMW(); ahmedcar.carName="anyname";

� � VB كود

Dim ahmedcar As New BMW() ahmedcar.carName = "anyname"

����oQ����� �NF.�' �n�� ZONض�א�����Nא\7�Tא �JOدא�KIא $وאل� � ،���bא���lWSل����'b' �����r���0�1א��$Dא �����b�JO � BMW א�� �P'ن��� �KPTא :� �

� � #C كود

class BMW: Car { public changeCarName(string value) {

Page 156: خطوة بخطوة مع فيجوال بسيك دوت نت

156

carName=value; } }

� � VB كود

Class BMW Inherits Car Public Sub New(ByVal value As String) carName = value End Sub End Class

� �3��،�����א���e��R�Rbא�WSن�'PQ�5 �o� �%'ع����دHس��h�!��3א 'b'ل����o�TPאن��f��3א 'b'ل ��

private�53�: ����+$م��f��3א 'b'ل��א\7�Tא �5P>�9 �JOא 'b'ل� ��53א%WS�Kא ،� protected �:א������:�אلTQ private ل�אل I�53�: ��,��א 'b'ل� ،� �U�:NPא\�5P>�9�:�'��U object 5P>�K��7א 'b'ل�א\

�KI�53دא�:� ��JO '�א!3��NsZ^�ل���א\7�Tא�،��JO � Car א�� �KPTא�� :�� �� �

#C كودclass Car { protected string carName; protected int carModel; }

� �دكو VB

Class Car Protected carName As String Protected carModel As Integer End Class

KIدא� � �����oQدא �NNP>� � �Lא� lWS�U �JO ��'PQ�f'ن� BMW ��א\7�Tא Wא� ،�hאq�\א� lWS� iz�7א�� �7'م�R�Rb�� �� �: א P'د�א �

� � #C كود

class BMW: Car�{ public changeCarName(string value) { carName=value; }���}

Page 157: خطوة بخطوة مع فيجوال بسيك دوت نت

157

� � VB كود

Class BMW Inherits Car Public Sub New(ByVal value As String) carName = value End Sub End Class�

� �

sealed - NotInheritable الكلمة المحجوزة .8.2

��JOא �c�Qא��+$אم��lWSא ��F�Pאن�WSא�� �KPTא���� �: ��5P>�9א�7�,9ق����Q�،�:N3ذ �� �

#C كودsealed class Car { }

� � VB كود

NotInheritable Class Car End Class

� � مالحظة #C في sealed تقابل NotInheritableالكلمة

الوراثة المتعددة .8.3

��9'!�� ��qא ���,��XHאو�אل VB.net C$�3Y��U�،�iא���א\��$دH' 1�a7!�:7 �א� managed c++ �nN�3�،

ZONض� $�J!��NQא�^����3�53���T �53אن�!��F����Jא 'Hא���א\��$د�iאن����P3ن��،��J!و��N��,��J!�� ���U�،�iH������3 �'Hא����q ��Dد د�� ���Nوא ����iHא�T و ��Q �5P،א\��$د���N�¦!�i����KFD�0�1'ع�%$'�d�$Q�j�VI�n�D*�א

. WS VB.netא��53�K��l�!'��9��3א ���,��XHאو�אل

Page 158: خطوة بخطوة مع فيجوال بسيك دوت نت

158

KF� ��Dن�د��q� ��،��7$م�אW �KQ$���Implementation 53��^�9 interface ��FN و��:��D�f���N���3�'Sو�،

zא�א��WS����KV� .� �

U�iא���א\��$دH' ���WSא�א ��!، VB.net و #��3C C\�ذא�_��7$م��PQ�3و�'!��د��Dא¦aא����s'�� �:� �� �

رابط http://blogs.msdn.com/csharpfaq/archive/2004/03/07/85562.aspx

قةالمشت الفئاتالتعديل في .8.4

،��7��� 3��,��U��NQCH��F� �n�D�iא $Hوس�א�KQ$�� �$א�Eودوאل�<��NNPאCو��ق�و�*j�VI�JO �،��i�Uא�$Q$א

� א\^�ل�i$Q$%���b�I��!�sא��NNP>�،���9א��q����N ��F���� ��'�D�n�D$د� �JO BMWא �����.�s����NF!��دא ... ،�وWPSא��i�g%C BMWא ��Q�O'ن�دא�KIא ����i��F��iHא�U���!�sא ���Hא��53�h'ع

� KFD� �NNP>�J!�A�ICHא!� ���� � � ¤�RF� � ����א �h�R�Oא��� �D$د �!�sא� �NNP>� � �Lא� lWS�U� ،� .�' � 5P U� �N`���א�������b�I�oQ א ����3 maxSpeed��U� �g�!�sא��OP�!�hאH��� �א 0�F��JO Car ��א����9א

�U���j�7���i3'%'د��S$`و��h�JO �. �א���B�z�N��א �

�����Fא 'Hא�����NS�53���0�1אن�� ��ªאن�وא�$�53�iא O'אj$�א�����j� �،��g��T�\א��b�N�� ��3�D�i$D�.�0sو��S53�9$��a7!�f �I9�7ط�א���!�s9�¢���KFDو �Uא�� �5}$�א �Oق����}H�،�h�3א�i$D��gN3�K��Hא�P��iد�Dא

�������� � א\^�ل�א 03�KF��� �N3א�� �����403�K3אو� �אوא�3 i$D�03��7�7��و 3�U�5P^�ل� ،�a7!�*j�VI�

�אن 0�1����� �����Lא� h���F� �وא �وא ��ض �D��1 �وא h����� �א i$D�.� U� ªOR� �و ���Y א\��+$م �א H�Oق ¤H$�:3$Dא���وH' �. א��+$אم�gO3'م�א �

� �

a - hasالعالقة من نوع .8.5

�!Wgא�S'�א N'ع �N�Hאول�د�U��NRsאو� �F� אن��c�Qع�'N �א ��א JOא ^�����53א � .��Y��hא �h�JOא\+��WS�،��Oא��n�D�'��J! A�IC3^�ل���NsZ!א�' �،��J!� �� �KPTא���h `� �: �א �� �

Page 159: خطوة بخطوة مع فيجوال بسيك دوت نت

159

#C كودclass Tires { int TiresType; int TiresSize; }

� � VB كود

Class Tires Private TiresType As Integer Private TiresSize As Integer End Class

� �

�53���� �hאH��9אن�א��N�7Q�f���iHع����'� tire is not a car iH��� Wא� car has a tire و �53�z�%��gNPא�،�oQ�����NNP>�J! � �� �KPTא���iH��� �: א �

#C كودclass Car { Tires carTires=new Tires(); }

� � VB كود

Class Car Private carTires As New Tires() End Class

� � مالحظة

وعمل خاصية لھا من اجل القراءة والكتابة protected او private نك تعريفھا كـ~ تنس ان بامكا إليھا

� �

Casting تحويالت ال .8.6

�.�'ع������v�,���،��Iא\gO'م�א ��م� :�وא�'א�U�:DدHس������ S��3'FD'�א �V7Q Casting 53�KQ'R$���ل �

����S�KQ'Rא��+$אم א ��7Q�1א�و�،� Classes وא�ن���RNول��1�����O@�א\�n�D���S�Oאل )cast( �،��Qد�� אiH����oQ������NF.�' � ^3 BMW :�� �

Page 160: خطوة بخطوة مع فيجوال بسيك دوت نت

160

� � #C كود

BMW ahmedCar=new BMW();

� � VB كود

Dim ahmedCar As New BMW()

���q�\ل�א��H����NF.ل و���� '�.�����k��H����NFد BMW دא ���7'م�����7MQא�،��R�Rb�iH'V��KF���f'�!� א

K�7��� Car Kن�����R�Rbא�WSن�'P��! BMW �7�7Lא�U��S Car ���P� ������FN���، �R�Rbא �����Fא

oQ������NF.�' �����^ �� BMW א ��17Nא�� �iH'Vא�� :� �

� � #C كود

Car ahmedCar=new BMW();

� � VB كود

Dim ahmedCar As Car = New BMW()

��Rbع�'s'\א� �WS �3א 'Sو� �!�����nD$Q� implicit cast �������i�,��3�q�\ل�א��H�5אP>وא�ن�� ،

K�7����t ��. Car א $א ��א �� �

�NF.��I��9�^3ض�ZON oQ�����:�! BMW � �� �KPTא�� :� �� �

#C كودObject ahmedCar=new BMW();

� � VB كود

Dim ahmedCar As Object = New BMW()

� ��MQא���Rbא�WS �Kن����J!'S� Object K�7����t ����א $א ��אq�\ل�א��H����NF.�' �5P �،��MQא Car �f'�!

KF�א��7'م��W �،��1I�� ��H��g(� cast �� �� �$�א�P,9ل�א]� :� �� �

#C كودfunctionname((Car)ahmedCar); functionname((BMW)ahmedCar);

Page 161: خطوة بخطوة مع فيجوال بسيك دوت نت

161

� � VB كود

functionname(DirectCast(ahmedCar, Car)) functionname(DirectCast(ahmedCar, BMW))

is الكلمة المحجوزة .8.7

�����F�!�Hذא���ن�I����F�P �: א �f�1א9ول�S'��53א �f�1א ^����،�3^�ل �7'م��lWSא �

#C كودif (ahmedCar is BMW)�{ }

� � VB كود

If TypeOf ahmedCar Is BMW Then End If

U��F�P ��و% ��lWS�¤$�Oא����ذא �F�!�f��אن���$Qو��� ،��JO א�i$D�53�hא�'ع�O��53��7�T3@�אq�3�i$Dد�'

. אو�!אH�BMW ^3 �������53'ع

� �

8.8. Visual Studio Class Diagram

�Hא$b9�53א�zא��$א�'Qאل���'د'`�O ��א��!'Q2005KF� �iאل �אدא Class Diagram �g��Dא�3^�ل�WS�، :

Page 162: خطوة بخطوة مع فيجوال بسيك دوت نت

162

53� �g�!�sא��NP> new - class diagram �g��D�KF� �و����53א ، ��Dض�א �אو ،� i�,��3�JO�،��Q$ �t א�hא�.���NP> modeא��z�Tא � .��hא\+��WS�U��Oא�אل �

� �

olymorphismP ـال .9

بشكل عام ، اآلن سنتعرف عليه polymorphismابق على معنى ال تعرفنا في درس س ...ر تفصيال بصورة أكث

� �oQ������ ��F�Q�W ��אMQ���������'د�و implementation ، �5P �$ون�א class א ����oQא\���sوא��!'Q

�אل�q���� ��F�Q�K��7\א�U implementationא��ص� �Y��� $א���JO �و��IAوא�א ،������f��Q� �3� 'S

Overriding.�� ��� �� '�א!��NsZو%'د�א $א ��א�،��Nא��ص���iH��� ��Kאن� ZONض�3^�ل�א.�iH���� ���7�א��r��b���Xא\��!��א\�

iH��� ��5Q�N،�و����אن�א �� ONQ ) ^3�(�KP$�א�' �%�f�V�10Z3'���� .� �� �

#C كودpublic int calc(int fuel) { return fuel * 10; }

Page 163: خطوة بخطوة مع فيجوال بسيك دوت نت

163

� � VB كود

Public Function calc(ByVal fuel As Integer) As Integer Return fuel * 10 End Function

� �iH���� ��N�FD�$���5P �KP א����NOTאن BMW و� ��' �%�f�V���gذ�א���،�i$D�7 �O��n�D@�א���9�iH��� ��lWS5א

،�a7!�hאZ3'��� 5��� �Lא�lWS�U� WS�،� �f��Qא�S'����3א\7�Tא �r� calc �U�JO%�����א�Dد�oQ����iא $אi��7د �א iد�Dא����� Overriding د¨�אل��3�$����oQ�����Qא $א �� ���Qذ ��polymorphism . 5D وS'�א � virtual ��53'ع base class א�U������9אل�� �KPTא�� :� �

� � #C كود

public virtual int calc(int fuel) { return fuel * 10; }

� � VB كود

Public Overridable Function calc(ByVal fuel As Integer) As Integer Return fuel * 10 End Function

�،��D�5P>��F$م���א\7�Tא �lWS�JOא $א ��<�5Pא�Dد�c�� �U��gOQ����iאن overriddeable אو�אل virtual אل��gOQ���،��MQא �U�� �� �: ���א\7�Tא �D9�JOد�G�P���gOQ����iא P'د�א �

� � #C كود

public override int calc(int fuel) { return fuel * 5; }

� � VB كود

Public Overloads Overrides Function calc(ByVal fuel As Integer) As Integer Return fuel * 5 End Function

Page 164: خطوة بخطوة مع فيجوال بسيك دوت نت

164

� �CMQאل�¤����NP>�� implementation �U� ��H�!�JO �א ���U�h�JOو��g��4���.����53א ��j��א ،�z�Nא�����f��

�JO �אل implementation ���� Abstract class א H�Oغ��53אل א��'Sو interface f���N��W �U�:��D א�3����.�د�3 .

Abstract ـ ال .10

n�D� �N!���� ���� �א �א $Hس U�F��� nN�3� Abstract Class �N!�Dو� ، gא����J!� ��$ون���Dد��Qد

implementation�K�.� :N3� �+���KFD�n�D� �N�O�4א�<��P �5P � ، iא]`'ز��F�P ����+$م�א ،� א��+$א3:

abstract��OQ��� :� �� �KPTא��� :� �� �

#C كودabstract partial class Car { }

� � VB كود

MustInherit Partial Class Car End Class

� � مالحظة

#C في abstract ھي مناظر كلمة vb.net في MustInheritالكلمة المحجوزة

� �� �Lא�lWS�U 1I�oQ��� �:[��'WS��N�1�Q�fא�א �

� � #C كود

Car ahmedCar=new Car();

� � VB كود

Dim ahmedCar As Car=new Car()

Page 165: خطوة بخطوة مع فيجوال بسيك دوت نت

165

10.1. method Abstract

��Uא ������oQא $وאلذ���� ��7'م �Nא�� �MQא� ���� ��7'م H$ virtualس�א KP KF���overriding���U� �k�JO �א7�T\א�iد�Dא�U��Lא��N�1�Q� �،�وWSא��3 �7��5 '�אHد���א%���Hא\9� �234P �،�:�S�{אو�� �gد�א��ص��'P ������א

i��7د �������n�D�overriding�oQא�Dد�iאW7'م��� Abstract method � �� �KPTא�� :� �� �

#C كودpublic abstract int calc(int fuel);

� � VB كود

Public MustOverride Function calc(ByVal fuel As Integer) As Integer

� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �

Page 166: خطوة بخطوة مع فيجوال بسيك دوت نت

166

� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �

Page 167: خطوة بخطوة مع فيجوال بسيك دوت نت

167

� �� �� �� �� �� �� �� �� �

� �� �� �� �� �� �

Interfaces الواجهات� �� �

� �� �� �� �� �� �� �� �

الباب

9

Page 168: خطوة بخطوة مع فيجوال بسيك دوت نت

168

Page 169: خطوة بخطوة مع فيجوال بسيك دوت نت

169

Interface تعريف ال .1 <��KFD�5P�'�d abstract methods and members���+�interface 'S abstract class n�D אل

N3 implementation 53�9$� inheritance �F��،� KFD�����P3�����F�Q implement ��^�9:�����+$אم�{gO'م53 interface $� ��. gO3 multiple inheritance'م �U5D�KQא\��iא 'א�$�iوS'�א �

oQ����5P> interface ^3�� �� �KPTא�� :� �

#C كودpublic interface ICar { int carMaxSpeed{get;set;} void AddItem(string Item); }

� � VB كود

Public Interface ICar Property carMaxSpeed() As Integer Sub AddItem(ByVal Item As String) End Interface

��N��9 interface ^3��nאن�������P3א,��7ق�� �KPTא����I��53 :� �

#C كودpublic interface ICar:IDisposable { int carMaxSpeed{get;set;} void AddItem(string Item); }

� � VB كود

Public Interface ICar Inherits IDisposable Property carMaxSpeed() As Integer Sub AddItem(ByVal Item As String) �End Interface

KF� � �7'م 9 interface implements و�� �: ������Pא P'د�א �

� �

Page 170: خطوة بخطوة مع فيجوال بسيك دوت نت

170

#C كودpublic class BMW : Car { } public class BMW2 : Car, Truck { }

� � VB كود

Public Class BMW Implements Car End Class Public Class BMW2 Implements Car, Truck End Class

� �iوאل�א\'%'د$ � . א�ن�<��NPא�Dد�������iא.�� W���NF.��F���JO . א�s!��دوאل�%$�i$Q،�و����53א��+$אم�א

� �

:لتي ال يمكنك عملها مع الواجهات هذه بعض النقاط ا� �

Wא�!�lWS�K^Fא��KFD�5P> Object :N3 �،�J��I���Fא Interface 9 �$א��Q،�אل :� �� �

#C كودICar x=new ICar();

� � VB كود

Dim x As New ICar()

U�د�D�q�3�oQ����5P>�9 אل interface אل�KIدא���Fא��lWS�K^3א�W �، interface �J��I :� �� �

#C كودint number;

� �

Page 171: خطوة بخطوة مع فيجوال بسيك دوت نت

171

VB كودDim number as integer

��b�I�KFD�'S�،�KQ$� � get و set א�� �KPTא�� :� �� �

#C كودint x {set;get;}

� � VB كود

Private Property x() As Integer Get End Get Set End Set End Property

� �1�C��������NP>�9�0�����1'د �. interface دא�KIאل ��

�KFD�5P>�9��F constructor K interface .�� �� �

2. Name Clashes

�������T��U:� ،�وstruct KF����3 implements 53��^�9 interface K��T3�E$d��}H אو 7Q��3 class'م א� �� ZONض�א\^�ل�א�،�zא��� :� �

� � #C كود

public interface ICar { void move(); } public interface ITruck { void move(); } public class BMW: ITruck, ICar { }

Page 172: خطوة بخطوة مع فيجوال بسيك دوت نت

172

� � VB كود

Public Interface ICar Sub move() End Interface Public Interface ITruck Sub move() End Interface Public Class BMW Implements ITruck Implements ICar End Class

� �

KF����F.�' ��F�!���PT3�${�5 ��}H implementation � �$א move �U�JO ��: �i BMWא�$Q$א �

� � #C كود

public class BMW: ITruck, ICar { void move() { // do something. } }

� � VB كود

Public Class BMW Implements ITruck Implements ICar Private Sub move() ' do something. End Sub End Class

KFD�hدHC�' �$א � implementation و �3�5Pذא� move 53 car � �$א�A�Iوא�move�53 truck 7'م���،� �� �KPTא���� W� :� �

� �

Page 173: خطوة بخطوة مع فيجوال بسيك دوت نت

173

#C كودpublic class BMW: ITruck, ICar { void ICar.move() { // do something. } void ITruck.move() { // do something. } }

� � VB كود

Public Class BMW Implements ITruck Implements ICar Private Sub move() Implements ICar.move ' do something. End Sub Private Sub move() Implements ITruck.move ' do something. End Sub End Class

KFD�$�و� object � ،�<�5P�Q$$�א �53�JO BMWא�� �KPTא����Sz�D$א�����Q�Y� �: وא�$�53�iא $א �

#C كودBMW ahmedCar=new BMW(); ICar temp= (ICar)ahmedCar; temp.move();

� � VB كود

Dim ahmedCar As New BMW() Dim temp As ICar = DirectCast(ahmedCar, ICar) temp.move()

Page 174: خطوة بخطوة مع فيجوال بسيك دوت نت

174

3. IEnumerable interface

�7Q'م�Class.�دC��J!�KFD���O���5D��3و� ،���N��ض�א�ن�و ^ �EدHوس interfaces �'א�Kbא�ن�دHو��03��NאلKF�� implement K interface אWS�U�،�Y�3 X�C$�Nس��H$ وIEnumerable ��3 א\�interface nF א

� �. ��Sא �i$j�Oא\�%'�iوHא�zذ �� �

مالحظةفي ھذا الدرس ، فھذا واحد من الدروس التي ست·حقنا كثيرا أثناء تطبيق أرجو منك أن تركز جيدا

.Linq مبادئ

'���z��C��!'OV3��J!��NQ$ ZONض�אن� � �� �KPTא���h������i$D�n�D :� �

� � #C كود

string[] users = { "Ahmed", "Mohammed" };

� � VB كود

Dim users As String() = {"Ahmed", "Mohammed"}

������+$אم�� : ��for – each��7�����NF�����Fوא�ن� �7א�h�Q'�)�izא\���N���!'OV��+$م�א P'د�א

� � #C كود

foreach (string us in users) { Console.WriteLine(us); }�

� � VB كود

For Each us As String In users Console.WriteLine(us) Next

n�D�$F���� �N��' � ��7N'م���'���0א\^�ل��'WS array ${�، ��Dא ،� �b�N� �א �!���n�Dאن�Hو$� �� ����+$م�دא �Nא�

� �P'ن�ذ �� �KPTא���YO&'\א��J!ض�ZON��،��J!�n�Dد��F�D9��� :

� �

Page 175: خطوة بخطوة مع فيجوال بسيك دوت نت

175

#C كودpublic class employee { int emp_number; string emp_name; }

� � VB كود

Public Class employee Private emp_number As Integer Private emp_name As String End Class

� �

� �NQ$ � 5P� ������ �J!�C�IAو n�D� '�d�53� �D'F�� 5D� iH��D� 'S� �א\��+$م �אن ���� ،� Y3$+��\א� hYO&'\3^ א�� �� �KPTא�� :� �

#C كودpublic class users { employee[] emp = new employee[3]; users() { emp[0] = new employee(10, "Ahmed"); emp[1] = new employee(20, "Khaled"); emp[2] = new employee(30, "Ali");� } }

� � VB كود

Public Class users Private emp As employee() = New employee(2) {} Private Sub New() emp(0) = New employee(10, "Ahmed") emp(1) = New employee(20, "Khaled") emp(2) = New employee(30, "Ali") End Sub End Class

� for each ����+$אم �אMQ�א\'&��NNP>YOא����אض��� �����Bאم�$+������MQא :

� �

Page 176: خطوة بخطوة مع فيجوال بسيك دوت نت

176

#C كودforeach (employee e in emp) { }

� � VB كود

For Each e As employee In emp Next

� �K��03 loop ،�Y�3��VND��D�� �:��03אل ��������n��N��W �. WS IEnumerableא�S'�א\�$�Cא �

K �: IEnumerable א\�interface nF א �KPTא�����9 �� �

#C كودpublic interface IEnumerable { IEnumerator GetEnumerator(); }

� � VB كود

Public Interface IEnumerable Function GetEnumerator() As IEnumerator End Interface

� IEnumerator ��53'ع�interfaceوא%�oQ������g و��U�A����Fא\^�ل�א �����،�7Q'م�� �KPTא�� :� �� �

#C كودpublic interface IEnumerator { bool MoveNext (); object Current { get;} void Reset (); }

� � VB كود

Public Interface IEnumerator Function MoveNext() As Boolean ReadOnly Property Current() As Object Sub Reset() End Interface�

Page 177: خطوة بخطوة مع فيجوال بسيك دوت نت

177

U�G�����N��' Wא� �J!�K�<אن� users 7'م�KF��� implements Wkl� ��1 �interface�KF'א%��gאMN��،

implement�� �$א GetEnumerator() � �� �KPTא���� �: ،���P'ن�ذ �� �

#C كودpublic class users:IEnumerable { employee[] emp = new employee[4]; users() { emp[0] = new employee(10, "Ahmed"); emp[1] = new employee(20, "Khaled"); emp[2] = new employee(30, "Ali"); emp[3] = new employee(40, "Sami"); } public IEnumerator GetEnumerator() { return emp.GetEnumerator(); } }

� � VB كود

Public Class users Implements IEnumerable Private emp As employee() = New employee(3) {} Private Sub New() emp(0) = New employee(10, "Ahmed") emp(1) = New employee(20, "Khaled") emp(2) = New employee(30, "Ali") emp(3) = New employee(40, "Sami") End Sub Public Function GetEnumerator() As IEnumerator Return emp.GetEnumerator() End Function End Class

�MQ��אQو$Q�� W��7م�� <��NNPא�� �KPTא��� :� �

Page 178: خطوة بخطوة مع فيجوال بسيك دوت نت

178

� � #C كود

IEnumerator i = emp.GetEnumerator(); i.MoveNext(); employee myCar = (employee)i.Current;

� � VB كود

Dim i As IEnumerator = emp.GetEnumerator() i.MoveNext() Dim myCar As employee = DirectCast(i.Current, employee)�

� �

هذه الطريقة ؟ اذا نستفيد منم

$D7'א ��،��ن�V��5���3$دS��NS�l'�3^�ل��U �J!�5Dא 'א.]!�0��2343'g����. � �����Q�h���0�1אن�Q���2�Nא א

iz�7א ���������ND�1א�ن�אbوא�،�h������i$D�7��:�������hא, ��+$אم��gN3وא � ����g�!�K7N��'��53��D'F��n�Dא

moveNext .�� �� �

:yield استخدام

� �� �: ��53�9$א P'د�א �����.��������Pא P'د�א �

#C كودpublic IEnumerator GetEnumerator() { yield return emp[0]; yield return emp[1]; yield return emp[2]; yield break; }�

� � ��و03�Lא�lWS�U KV��n��� ^��وWPSא�^ �!�����^ ����א �$א �������א�Dد�iא ��F�7א�و��،�z�D$אول�א�� ��

yield break.�� � ��SC�53�i$�،�و���nذ ��אLinq �KOq��9C�nNeC�YL א��9+$א�h�3א N ���KV���3$ND�����O�����n�D�fوאN�D5D�� WS��g%א' �.�lא �

Page 179: خطوة بخطوة مع فيجوال بسيك دوت نت

179

4. ICloneable interface � �

��nN�}�،�5j�Pא�����FD clone �3$ND��Nאل�¢�N � ����FD��g��$V7Qא�� �: ��G�Pא P'د�א �

#C كودint x=5; int y=x;

� � VB كود

Dim x As Integer = 5 Dim y As Integer = x

� ��N�¦! �F�.�K7N7���'م�����! x �� y ���U�5P �،�و�� �KPTא���h�JO �: ������03��N�3א �� �

#C كودcar x=new car("BMW"); car y = x;

� � VB كود

Dim x As New car("BMW") Dim y As car = x

�F�.א.�0אن�' ����א\�Pن�א W���K��، y �F�.�:�!ن �U x ���K7�N��9 yאTQ���VQ x א�!¦ن�אW ��$�KQ ،�و�F�.�U x �F�.ل�$��� y �@P� ���@P� �وא �

� ��א��I �53א%��KFD�K��U�i$Q$%��+א ��F�7وو����FD�������NS�53 clone U��g�sאلq�\א .� �

�g%א' ،<�5Pא��+$אWk��g3א�א �qض�،�����<���������NNP'د� �n�D cloneא $א � א �t��' ICloneable א� �� �� :� �

� � #C كود

public object Clone() { return new car(this.carName); }

Page 180: خطوة بخطوة مع فيجوال بسيك دوت نت

180

� � VB كود

Public Function Clone() As Object Return New car(Me.carName) End Function�

KFD����P3�����bאم א�ن�א$+�����i$Q$%��+�� clone � �� �KPTא�� :� �

#C كودcar x=new car("BMW"); car y=(car)x.Clone();

� � VB كود

Dim x As New car("BMW") Dim y As car = DirectCast(x.Clone(), car)

� �

5. IComparable interface � �

�אل �Q��+$م�WSא �S'�وא�53��sא���9، �F� interface אل� 1�����אن�PQ'ن�,WS�KPא ��53א �و Wא ،� ��H�7F�

interface�KPT �� � �� �: א �

� � #C كود

public interface IComparable { int CompareTo(object o); }

� � VB كود

Public Interface IComparable Function CompareTo(ByVal o As Object) As Integer End Interface

�NP> ���7 �)��אن�א $א �����$�.��U�$�����S�����!�،���F.H��Fא\���د�א 30� ���U� ��F�7 �1�Uא ���و�،�א ���'ن�א �f�1א�ول�א��4،�و��� ���'ن�א �f�1א�ول1−���U� �qbC .� �

Page 181: خطوة بخطوة مع فيجوال بسيك دوت نت

181

�¤�W��iد�D�53א��D�9��دא���]�hאH���D9�@� ���و�.���gFא $א�K�����Iא ��17N ن�א PQ�YNj�P'��ن��3��و�Qن�

5 ��3�'Sو�،�iא��W ON@�א\�Pن��Uא��g�H�,א�U �����!���H�7\ج������Nא������،�:%����.�53�:���NF.��3א�WSو� ��. I equals ل�א $א �

�!��\��%�r��N��!� �NS� �NQ$ �t �א ��17Nא ��3�����%��!�� א�3�U�5��K�� �א �5j�Pذא¤�אم��9، Q�KS��و�WSא،��qbא��4אو�א��FgQא �g���bא����JO �. و ZONض����0Nb�¢QHא ����5Fs�iHא �

�JO 1���א���N���bא����JO ��������U��NF.��Fא $Hس�א �����،���K�`Nא� Icomparableא�9'אد�������G�P�����،

� � �U CompareToא $א�� 3^ ،� ZONض�א �KPTא :� �� �

#C كودint IComparable.CompareTo(object obj) { Car temp = (Car)obj; if(this.year > temp.year) return 1; if(this.year < temp.year) return -1; else return 0; }

� � VB كود

Private Function CompareTo(ByVal obj As Object) As Integer Implements IComparable.CompareTo Dim temp As Car = DirectCast(obj, Car) If Me.year > temp.year Then Return 1 End If If Me.year < temp.year Then Return -1 Else Return 0 End If End Function

���� �iد�D�0�1א���������¤�W� ��D1و0و1−��$�94�53�9و��0و�100−�9دאK�g�� WS�5Pא��،� �� א\gO'م�،�א $א

Page 182: خطوة بخطوة مع فيجوال بسيك دوت نت

182

G%'3��.Hو�و��� �c�Q�Gא�c�Q��Ob�،��qbא����.H�� 9$��KF�� ��.� �c�Qא��a7!�4دون�אن�WS��F�.��g�N�Qא�א����O �. א �

� �

: Sort الدالة

�!'OV3� �NQ$ ZONض�אن� array م������.H9�53א myNumbers lWS�U�، �� �� �������Pא���3א �NF.�' �� �Lא�3'gO3د�'P �Pن�א :� �

� � #C كود

Array.Sort(myNumbers);

� � VB كود

Array.Sort(myNumbers)

���g!¦ن��Z �5 '���ن� $OV3��NQ'!���53א ���Hא�h،�و���WS��Nא�א P'د�P �. WSא��� �[��$���1I�E$R[ و �

�JO ���'ن�א���U�5P car אل���1� IComparable interface א�WSא��+$אم���NPF���� �Lא�lWS��O!�،� ������ א $א�g��� �PQ��}H�،��g��4'ن� א ��F.�tא�� 7��f'��� CompareTo'م���\���H�7א�F�Dدא��n�Dدא

�� �7'م���1����WSא�אل�!������3^ �אو�א� check א ���$�������53�9دא ������א $ و�������'د WS interfaceא���Fg\א�@ON��7م��� ��I�2343 . א��������g�'s7��وو�9�KP���bא����JO ���K�gא��+$אم�א��!�s9������WSא��

�I� � �� �� �� �� �� �� �� �� �� �� �� �

Page 183: خطوة بخطوة مع فيجوال بسيك دوت نت

183

� �� �� �� �� �� �� �� �

� �� �� �� �

األخطاء واقتناصها

� �� �� �� �� �� �� �� �� �

� �� �� �� �

الباب

10

Page 184: خطوة بخطوة مع فيجوال بسيك دوت نت

184

� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �

Page 185: خطوة بخطوة مع فيجوال بسيك دوت نت

185

�Hد�U�f���Nא�WS��N،��gQد�Oو���gb�N�.א���Oو���z�1Iא��n�D� �5P �Kj��H�����3א�1[�وא,��gא�z�1I9وI !:�،�و�$א�����Qج��ن��'C��s.��م �: א��z�1Iא �t��U�KVא�����23 .��Kא �

1. ErrorsSyntax - األخطاء النحوية :

Uو�،�Kg�9א�'S�z�1I9ع��53א'N �א �K^3 Visualאل WS Advanced Programming Environmentsא

Studio , netbeens ... etc z�1Iא��lWS�f�Tא�����Q�، �� �� �: !'QH��،�3^�ل�WSא�א�1[�������א����Fא �� �

كودif x.Nome = somevalue

$`���0�1 �� ��b4¤��[ن�א��§�W�ON� ��Kא.�]1I�� ��H Nome �S�z�1Iא��lWS�K^3�،�i3'%'د�� �Kg�9א�QوUو�،� �g��D�KF���t ��qא ���4א��Jل��� I�53��g!�Tא���� Visual Studio .net 2008 �Kj��H��R�bא

lWg���g�� ��و'g����S�O��5P>و��Q�q� ��Rs��7 א���1وאQ�1 �.א �

2.Logical Errors األخطاء المنطقية :

'S�z�1Iع��53א�'N �1I�$%'Q[��'�و ��g(Q��71N3��1I�:NPא�b�n��!�،�G�b��$�������א P'د�WS 9��}Hא�א$ND � �� �: א ��W�ON،�א��3�a^�ل�WS�n�Dא�א�S�]1'��������'د��� �� �

كودByte x = 100000

�����fאن��$ود ��� �)Byte �]1I��g א N'ع �� �و �U�5Pאb9$אHא�hא WS�5PQ�_��>$7א ،�$Lא�אWS�53��qbא

��� �A����F���Q'����'�P3���Fאن�א�.�� ��object K אWS�n�D���^3א�א�1[�א��Nد�.���Fل. KFD new �: �. א�..� �

'Qאل���'د'`�!�hאHא$bא� 03�5P ��Dא�'א� ¤�NSאن��K�� ،� i�,��3� �g(�� z�1Iא�� lWS�K^3��R�bא� ،� i$Q$א�

���א �O`'אل���'دQ'�.�د�n�D�Hא��Logic Errors KP,�n�D��g!�T א�53�G�bאلbא� warnings.� �

$����GSW��5 �$7���C����אلN��،א� Logical Errors אع�א�����'�C��� ������Sא��z�1Iא���Sو :� �

Page 186: خطوة بخطوة مع فيجوال بسيك دوت نت

186

- User Error:

�א\^�ل�א �����ل �NsZ!א�' � ،�23��4 �53�2�N��z�1IC Byte �5Pא��+$אم�א� �7'م�!�:���+���FD�5Qא\��+$م�،��.Hل��I+$م�.�م���د��א�1[10א\� �WSא ،�f9א� � '�_���5P.�53�$א\��+$م������ �F�!�� �K��T\א�U�G

א ��Y�3�$L��F،�אMQ��אد�Iل����������I�U���V��hא ���FوH$N��:! Iج���� א��Os,�ط�א �[�D�53�$$م�}�وز�. �z�1ICא\��+$م א�� �

- Exceptions:

�!����o�3אو � �(�و ،� z�1I�53א�� �g,א�� ����_��Q א N'ع� ^3� i3'%'د� ��h������ i$D�.�iH'V�� �g��F�� �izא�.�� ��Yא����g��و ��R�Rb،�(�و�U�h����� ، nullable type �$ون�א��+$אم �i$D�.�53�h����� nullא

�V��o�3��������P �. ،�وI !:��53א��z�1Iא\ReadOnly iH'gT (�و ��א �

- Bugs :

4 �5���S�Vو��S$D�9،�و�'%$��0�B�UאP>�9�،�i�g,�z�1Iא23א�^��א� ��g3$+����t {��!����g�+��א 'NQ$وز�א�NNP ��gN3�23�����'���5و�iد�� �אو�.�א�U�، �izאq�3�fW����G���ن����E$��$.�،�1ع���א\�H$.��gQد�Oول����

�F�.�53�q�3 ���H�!��F�.��gو���5)�5א��iא��W ��g(�99�٪�53ل� א��،��lWSא��z�1I.$�9...�3'%'د�iא�U� bא��NS¤א\� ��P'ن iد�� ��Uא Wא� ،� a7!� $��وא �\��+$م �g(�� �NP �א������Y3$+� �23و 53� ���Q�{�¢��� i$D

K�.��g�Q$�و��z�1Iא��lWS3��!��א�5��3א3^�ل��� �. ���vא N�+��א ���� ]�و �

n�D����Nא��WS��N�Hد�U ^N�0א��sول�و�RN���MQع�א�ول�א'N z�Nא53�hא N'ع�א ^�����53א��z�1IوS'�א���S،�א

��א�و��،�א�3�Lא�U��Sא���S��7R� �`���� א%�Kא �[��53�$אH���Iא�hא\��+$م�و �KB�5Pא�!��^ �^ ��א�Lא�g���7� �K^3א������' . א\���i�Fوא\��������Sא

� �

Exception . Systemالفئة .3

�JO �����U�_�D� .net 03�K3א\+���SVא�� N)�م�،��Uא 'א.�0!¦ن�C��K��Q�]1Iא��z�1Iא �t��U�E$א :����אل �N)�م����7Q'م�א N)�م��H�� CLR ل'��lHو$��W ����WS�03�K3א�א�System.Exception ��1 ،�وא

، WS�h�Q'�)l��JO �א�� �KPTא��� :� �

Page 187: خطوة بخطوة مع فيجوال بسيك دوت نت

187

#C كودpublic class Exception : ISerializable, _Exception { // Public constructors public Exception(string message, Exception innerException); public Exception(string message); public Exception(); // Methods public virtual Exception GetBaseException(); public virtual void GetObjectData(SerializationInfo info, StreamingContext context); // Properties public virtual IDictionary Data { get; } public virtual string HelpLink { get; set; } public System.Exception InnerException { get; } public virtual string Message { get; } public virtual string Source { get; set; } public virtual string StackTrace { get; } public MethodBase TargetSite { get; } }

� � VB كود

Public Class Exception Implements ISerializable Inherits _Exception ' Public constructors Public Sub New(ByVal message As String, ByVal innerException As Exception) End Sub Public Sub New(ByVal message As String) End Sub Public Sub New() End Sub ' Methods Public Overridable Function GetBaseException() As Exception End Function Public Overridable Sub GetObjectData(ByVal info As SerializationInfo, ByVal context As StreamingContext) End Sub ' Properties Public Overridable ReadOnly Property Data() As IDictionary Get End Get End Property Public Overridable Property HelpLink() As String Get

Page 188: خطوة بخطوة مع فيجوال بسيك دوت نت

188

End Get Set End Set End Property Public ReadOnly Property InnerException() As System.Exception Get End Get End Property Public Overridable ReadOnly Property Message() As String Get End Get End Property Public Overridable Property Source() As String Get End Get Set End Set End Property Public Overridable ReadOnly Property StackTrace() As String Get End Get End Property Public ReadOnly Property TargetSite() As MethodBase Get End Get End Property End Class

�:�lא ��JOא�RN� Wk������9ول�א ����n�D�fא�j�V*�وא �1ق �� �

��bא��� �nN�\א� �Message� ��א�1[���H ��b�Lא� �

Source� ����א W�.�م����o�3KFא��9 throw ]1א�א�Wk� �HelpLink� ��aא�H�n�D���bא���lWS�'� �:N3�iد�O��9�0�1א����،�K�VO� ����א����PT\א�v�TQ

:N3�$�O��Q��}H�234وF� אل�U�*V+�\+$م�א��א\ IT �3�(N � � � �

Page 189: خطوة بخطوة مع فيجوال بسيك دوت نت

189

xceptionsEhrow T - رمي االستثناءات .4

¤W�ONل�� I 7'مQ�5אن�P>�23��4� KF���23��4 ��D�K^3��3�]1��.����N� ���O$م�و%'د�throw �Y�3�o�3 �אKF����g�!א����G����A�IC�� ���¤�NS�K(��5P �،�:�3�K3��� 1[�،� ZONض�א��� throw .�אWS�izא�א�1[�وא+�

KF��� ��7'م check �7'م �א\��oو���53 �و%'د �א\�D�53�$�]�� �o$م �و%'د �D$م � ���U� ]1I� � ��Hض������ ^3�� �� �KPTא :

� �

#C كود if (!System.IO.File.Exists("c:\\ahmed.txt")) { Console.WriteLine("there is no file"); }

� � VB كود

If Not System.IO.File.Exists("c:\ahmed.txt") Then Console.WriteLine("there is no file") End If

]1Iص��N�.����7��_��}H��NP i$�'3�z�1Iא�*N.�iH'b�U�Gو����،�a7!�iz�7א� �o�\ن�א'�������!�s9���،� ^���03א 'Windows FormsGQ.$����ج���9+$אم��O@�א �5Fs��JOאل����i�3و�A�IC�hאH���Dא�و��C� ،�

KFD�U�G��� throw �234���N��' � ^3�234F� J!�g3א��+$א���� ���.�lWS�53�� KFD�5P>�hאH���D9א

throw�� �� 1[��� �KPTא� :

� �

#C كود if (!System.IO.File.Exists("c:\\ahmed.txt")) { throw new Exception("there is no file"); }

� � VB كود

If Not System.IO.File.Exists("c:\ahmed.txt") Then Throw New Exception("there is no file") End If

Page 190: خطوة بخطوة مع فيجوال بسيك دوت نت

190

'Qאل���'د'`�O 9�0�1�7��.�א�5j���izא�1[�وא ���WPS K3א�}$�אن�א����،��g�Rsאو�t ��א��� ���]1I�H�g&م����.

. �03�K3������F��:�3א�1[�א W��53���j�7���2�NQא �O`'אل�����

catching exceptions - ناص األخطاء اقت .5

a�א��،�z�1Iص�א��N�.א�Hدو�z�%אم א�ن�$+������S��7Q�� Try و%'د��� ���U�¤'�� �����rج�א �53�23��4א ��3^ א�1[�دون�אن�� �23��4،��� �KPTא ��o.'��U�Gא��Q :

� � #C كود

try { x+=100; console.writeLine("no errror"); } catch { console.writeLine("some error!"); }�

� � VB كود

Try x += 100 console.writeLine("no errror") Catch console.writeLine("some error!") End Try

�7��� ��و%'د�����FD�U�]1Iא��0Fא���U א�7��9ل����i�,��3�����! catch�4 ��D��F�!�،�23$א�ذ ����'א�Kbא�g��D�H23��4 دون�א\�و �. ،�و�K��Uא9���ن� ���Q�5א�f�7Qא �

�NNP> �7��� �$�����E+$אم�א�j�V*�א�W �א�D��MQض���5D�K�b�Oא�1[�א �

#C كودtry { x += 100; console.writeLine("no errror"); }

Page 191: خطوة بخطوة مع فيجوال بسيك دوت نت

191

catch (Exception e) { Console.WriteLine("Method: {0}", e.TargetSite); Console.WriteLine("Message: {0}", e.Message); Console.WriteLine("Source: {0}", e.Source); }

� � VB كود

Try x += 100 console.writeLine("no errror") Catch e As Exception Console.WriteLine("Method: {0}", e.TargetSite) Console.WriteLine("Message: {0}", e.Message) Console.WriteLine("Source: {0}", e.Source) End Try

>�t '����f�����N���א��z�1Iא،�E$��5אن�P ض�א\^�ل�ZON �،�� ��!�D��F$א�ذ��� ����SHو�Dض�א�Iא��NNPF�!�N�'��� ���U�� �� ���D�]1xم C�f��� overflowن�א��5P>�]1אن�PQ'ن����G א��H��g(N��� � ،�و!�D��F$א�ذ �

� � #C كود

try { x += 100; console.writeLine("no errror"); } catch (OverflowException e0) { Console.WriteLine("value of x more than up bound"); } catch (Exception e) { Console.WriteLine("Method: {0}", e.TargetSite); Console.WriteLine("Message: {0}", e.Message); Console.WriteLine("Source: {0}", e.Source); }

� � VB كود

Try x += 100 console.writeLine("no errror") Catch e0 As OverflowException

Page 192: خطوة بخطوة مع فيجوال بسيك دوت نت

192

Console.WriteLine("value of x more than up bound") Catch e As Exception Console.WriteLine("Method: {0}", e.TargetSite) Console.WriteLine("Message: {0}", e.Message) Console.WriteLine("Source: {0}", e.Source) End Try

Finallyاستخدام .5.1

¤'�� '��try - catch �U�G�����N ���+$م� ����Q�g��$���W�ONא� ^F!�،�:3$D1[�אو�Iو%'د��� ���U��SW�ON����Qو�3�*���D��� q�\א�U�]1I�Eو$��5D��(N ���q� x $D�53א�� �: �G�P��:3א P'د�א �

#C كودtry { x += 100; console.writeLine("no errror"); } catch (Exception e) { Console.WriteLine("Method: {0}", e.TargetSite); Console.WriteLine("Message: {0}", e.Message); Console.WriteLine("Source: {0}", e.Source); } finally { Console.WriteLine("somehing"); }

� � VB كود

Try x += 100 console.writeLine("no errror") Catch e As Exception Console.WriteLine("Method: {0}", e.TargetSite) Console.WriteLine("Message: {0}", e.Message) Console.WriteLine("Source: {0}", e.Source) Finally Console.WriteLine("somehing") End Try

Page 193: خطوة بخطوة مع فيجوال بسيك دوت نت

193

breakاستخدام .5.2

5P>�،��3�����3�U�z�N^N��9وج��53א�+� ��O`'אل����� C Exit Tryو break א��+$אم ����N �� .

Target Siteاستخدام .5.3

�'ل��i$Q$D�h�3'��3���bא���lWS��!'��JO �+�5P>�،�]1א�O��9د��throw �U��gN3�iوא $א ��א KF����3�.�tאKFD Debug ��. $و�Eא��P3��!��\]1ن� �

HelpLinkاستخدام .5.4

��C� ^3و�א\��+$م���gא ��JO���0�1א!�د3�i��+$م��� �KPTא���:N3�iد�O��9א�:NP>�Y�3��N� �0sو��Q���5D�، � �

� � #C كود

try { m += 100; Console.WriteLine("no errror"); } catch (Exception e) { e.HelpLink = "www.ahmedgamal-space.blogspot.com"; }

� � VB كود

Try m += 100 � Console.WriteLine("no errror") Catch e As Exception � e.HelpLink = "www.ahmedgamal-space.blogspot.com" End Try

Page 194: خطوة بخطوة مع فيجوال بسيك دوت نت

194

أخطاء خاصةعمل .6� �

9����U��7א������Qא,��g3א��+$א��NP>�]1Iع�'N ��53��g.�7�BaseExceptionא �53��J!�oQ�����NP>��JOא� 53� �7�T3� �g���� �MQCج�������C� �F��g%א' ��Iserializableא ��Uאل �g3א��+$א� ����P3א�K%�53א�remote�

� ^3�� �� �:و�I�]1I�oQ�����NP>�،�:! Iص��� �KPTא �� �

#C كودpublic class NewException : BaseException, ISerializable { public NewException() { // something here } public NewException(string message) { // something here } public NewException(string message, Exception inner) { // something here. }� �����Fאل // Sterilization

protected NewException(SerializationInfo info, StreamingContext context) { // Add something here. } }

� � VB كود

Public Class NewException Inherits BaseException Implements ISerializable � Public Sub New() ' Add something here. End Sub � Public Sub New(ByVal message As String) ' Add something here. End Sub � Public Sub New(ByVal message As String, ByVal inner As Exception) ' Add something here.

Page 195: خطوة بخطوة مع فيجوال بسيك دوت نت

195

End Sub �ل �����Fא ' Sterilization � Protected Sub New(ByVal info As SerializationInfo, ByVal context As StreamingContext) ' Add something here. End Sub End Class

�'ل�א�z�1I9وא.���NP>��gb�Nא �%'ع�����$Q�F� msdn:�� �

� � رابط

http://msdn.microsoft.com/en-us/library/ms229014(VS.80).aspx

� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �

Page 196: خطوة بخطوة مع فيجوال بسيك دوت نت

196

� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �

Page 197: خطوة بخطوة مع فيجوال بسيك دوت نت

197

� �� �� �� �� �� �� �� �� �� �� �� �

Collectionsالتجميعات

� �� �� �� �� �

� �

الباب

11

Page 198: خطوة بخطوة مع فيجوال بسيك دوت نت

198

Page 199: خطوة بخطوة مع فيجوال بسيك دوت نت

199

�N��7��1��UKF� �]`����3�iد�D��O��+\����4א %�Kذ �������אل'�dC�container �53�،��b�ND�i$D�n�D �א

array�KFD��N��P3אن�����NQCHو array 53 ��O����h�J!�53�n��א�Iص�وא'VN ��9א���N!$����ج����.�אH9.�م�وא ��Nאل ����א\�gم��S�!'��t ،��U א\+��collections��O و%$�hאل،��53א%WS�Kא� array א�9^�������53א

. دWS��N�Hא��'���g��D�f�����fن�,��zא�

� �

Collections . Systemفي interfaces ـال .1

h�g%א' �� collection א\'%'د�U�iאل '�Hא%���Nא�� '%$���א 'א%�h�gא :� �

Icollection:

و��k�،�:! Iא �KPTא ��م��IsSynchronized وאل size��'��lWSא 'א%��n�D��g���א �7Nط�א�K^3������9אل� �� �: א �

� � #C كود

public interface ICollection : IEnumerable { int Count { get; } bool IsSynchronized { get; } object SyncRoot { get; } void CopyTo(Array array, int index); }

� � VB كود

Public Interface ICollection Inherits IEnumerable ReadOnly Property Count() As Integer ReadOnly Property IsSynchronized() As Boolean ReadOnly Property SyncRoot() As Object Sub CopyTo(ByVal array As Array, ByVal index As Integer) End Interface

Page 200: خطوة بخطوة مع فيجوال بسيك دوت نت

200

Icomparer:

�7�����g��D��N!��� .� �

Idictionary:

�+�5Qد���+$م��S��F'�وא�53��sא��53��gא%�Kא9��g3�5א��+$אP>�،�� ��gNQو�NDو�YO&'\א�h������ ^3

9$ ��א�:��*+T .�אو�ND'א�:�،���'��n�Dدوאل� �s!��وא�fWLو�5P>���r �:! Iא �^'��H�$�ذ ���n�Dא�KPT ����kم��� �א �KPTא�� ��:א �

� � #C كود

public interface IDictionary : ICollection, IEnumerable { bool IsFixedSize { get; } bool IsReadOnly { get; } object this[object key] { get; set; } ICollection Keys { get; } ICollection Values { get; } void Add(object key, object value); void Clear(); bool Contains(object key); IDictionaryEnumerator GetEnumerator(); void Remove(object key); }

� � VB كود

Public Interface IDictionary Inherits ICollection Inherits IEnumerable ReadOnly Property IsFixedSize() As Boolean ReadOnly Property IsReadOnly() As Boolean Default Property Item(ByVal key As Object) As Object Get End Get Set End Set End Property ReadOnly Property Keys() As ICollection ReadOnly Property Values() As ICollection

Page 201: خطوة بخطوة مع فيجوال بسيك دوت نت

201

Sub Add(ByVal key As Object, ByVal value As Object) Sub Clear() Function Contains(ByVal key As Object) As Boolean Function GetEnumerator() As IDictionaryEnumerator Sub Remove(ByVal key As Object) End Interface

� �

Ienumerable:

��7�����g��,��.� �

Ienumerator:

��7�����g��,��.� �

IdictionaryEnumerator:

U��(�9�' IDictionary � א��ص���lWgא $א ��،�WS�، interfaceא�S'�אل GetEnumerator ��`$�א $א

� �� �: ��kא �KPTא ��م�א �� �

#C كودpublic interface IDictionaryEnumerator : IEnumerator { DictionaryEntry Entry { get; } object Key { get; } object Value { get; } }

� � VB كود

Public Interface IDictionaryEnumerator Inherits IEnumerator ReadOnly Property Entry() As DictionaryEntry ReadOnly Property Key() As Object ReadOnly Property Value() As Object End Interface

Page 202: خطوة بخطوة مع فيجوال بسيك دوت نت

202

IhashCodeProvider:

�D���*�� hash code Kد�iאل collection � ��.GetHashCode א\������Y+$אم�א $א �

Ilist:

،��Fj�. fWLوא��R� �s!��وא��g�3�K3��� �KوI !:�א WS PTא���U��3�Kא��،��3��'��i$D�n�Dدوאل����Kgא� �� �KPTא����kم��� �: א �

� � #C كود

public interface IList : ICollection, IEnumerable { bool IsFixedSize { get; } bool IsReadOnly { get; } object this[ int index ] { get; set; } int Add(object value); void Clear(); bool Contains(object value); int IndexOf(object value); void Insert(int index, object value); void Remove(object value); void RemoveAt(int index); }

� � VB كود

Public Interface IList Inherits ICollection Inherits IEnumerable ReadOnly Property IsFixedSize() As Boolean ReadOnly Property IsReadOnly() As Boolean Default Property Item(ByVal index As Integer) As Object Get End Get Set End Set End Property Function Add(ByVal value As Object) As Integer Sub Clear() Function Contains(ByVal value As Object) As Boolean Function IndexOf(ByVal value As Object) As Integer

Page 203: خطوة بخطوة مع فيجوال بسيك دوت نت

203

Sub Insert(ByVal index As Integer, ByVal value As Object) Sub Remove(ByVal value As Object) Sub RemoveAt(ByVal index As Integer) End Interface

� �

Collections . Systemالفئات في .2

�� �� �: '�d��n�Dא �h�JOא �� �

• ArrayList � �• Hashtable � �• Queue � �• SortedList� �• Stack� �� �

2.1. ArrayList

�Fj�.��S array אل�h���@ON����F���،���9�53א��sوא�'S��F� array 53 ��!�sא�،�h������i$� ��gNQ�§����FD�Kg���t �. وא ��$�KQوא �G��Zوא�fWLوI !:�دא�lWS��b�ND�KIא\�h��� �!'OVא��F\�!�s9א�hא ��Fj�7א �

��J!� �NQ$ ZONض�אن�)iH����(iH��� و3'د������gN3��!'OV3�f�����N��،��g�Q+$אم� א �����7وא �t��'��n�Dא���א

� �� �: א���3א �� �

#C كودCar[] carArray = new Car[4];

� � VB كود

Dim carArray As Car() = New Car(3)

��V7Nن�،��fWr�G�����}Hوא�$�f����5P��_��}H ��gN3�iא������ج�H����0�H9אH�،�a7!�h{�����ج� ���Qد�iאو�oV�N\אل...��53א��N ��!'��9�A����FP!�،א�� array �،�*j�Vא��lWS�03�K3��� ���K�gא�hאH�53א����^P א

����א�وא�3 ��fWRو��R�� Iج�:! .� �

Page 204: خطوة بخطوة مع فيجوال بسيك دوت نت

204

� �hz�%� 5P array List K�� ،� h���F� �א lWSص�'Vx�K��T3�א���S��� 5D� �7�� oQ���� 'S����D� �3

arrayList��� �� �א �7Q�1 ���–� ��7'م �Cن $���KF�� using ل System.Collection �K3��� �א n�D� �.�دHא �P'ن�7�9��g�3��,����.−� א\ �

� � #C كود

using System.Collections;�ArrayList carList = new ArrayList();

� � VB كود

Imports System.Collections�Dim carList As New ArrayList()

� �iH�����!�sא��NP>وא�ن� :� �

#C كودCar temp = new Car("BMW", 1990); carList.Add(temp);

� � VB كود

Dim temp As New Car("BMW", 1990) carList.Add(temp)

KFD��MQ�0�1א��� insert � �� ����G�Pא P'د�א�^ �: �s9�،�Y�3�z�%�U!��א ����U� ^3�iHא\�Pن�א �� �

#C كود carList.Insert(3,temp);

� � VB كود

carList.Insert(3,temp)

�MQC�Fj�7 9$ ����:�.'3��3�0�1������K3א��Y�3��VND���3و�C�،�:�� �� �

#C كودcarList.Clear();�carList.RemoveAt(4);

Page 205: خطوة بخطوة مع فيجوال بسيك دوت نت

205

� � VB كود

carList.Clear()�carList.RemoveAt(4)

� �Cو��n��:�O���VN� 9$ ��א� :� �

#C كودcarList.Remove(temp);

� � VB كود

carList.Remove(temp)

��bא��+$אم�א����NNP> Count �g��Dאن�Hو$ ��א�� ��3^ \��!��א �$د�،�و���� ���� �KPTא��B :� � #C كود

for (int i = 0; i < carList.Count; i++) { temp = (Car)carList[i]; }

� � VB كود

For i As Integer = 0 To carList.Count - 1 temp = DirectCast(carList(i), Car) Next

*j�Vא��+$אم�����א���NNP> K^3�A�Iא� sort ����g�Q'���NNP>�،��7�����NF�����F� array אم$+������Qد�D

� ���،� ���+$م �G�����@P��� indexofא ��Fj�7،�א $א � Reverse ،�א $א � toarray א $א�� ��7Q�1א����R�� iH��� ZONض� $��NQא temp 5Fs��gND��R� � و����U�Gא�� �KPTא���� �: א ���Hא�hא\'%'دP���،�i'ن�ذ �

� � #C كود

int find=carList.IndexOf(temp, 0);

� � VB كود

Dim find As Integer = carList.IndexOf(temp, 0)

� �q�\�0�1א��+$אم�א��א��WPSو find K3��� �'b'ل�����P3ن�א ���VNوא ��17��$Q$���NP>��F��،�$Q����F��:�3

�Qא$���R� ��Sאو�D$م�0א�qد���אو��$���F�� � bא��g3א��+$א.� �

Page 206: خطوة بخطوة مع فيجوال بسيك دوت نت

206

� �

2.2. Hash Table

h����� ������hא\�����1،��ذא�_� ،��Fg3:�א�������9�data structure K�g وא�$����53ق�§��5Qא ��5D��Rא א��lWS����D�h�3�$.�5P� hash table Kאل.�53 �NS��Q$��PQل�و I�53��g��D�f��� ����RV��! :� �

� � رابط

http://en.wikipedia.org/wiki/Hash_table

~ ���53��D'F��5D�iHא\�hashtable����Oو��Q$,�H�V�I$�،�!�ن�אD��S��keys�Kj9$ ����Indexesن��53��g�3א�����P3ن���.��א ���7א\����03��1א\T�Oא�v�������9.� �

� ��� ����5Q'Pאل�Uא ��7'م �N���� hashtable 5D�iH��D Linked List K��a���Q X�:�!� �VND Linked list

���������oQ א�A�I،�و�7���N'م����KFدوא :�وא%�אzא�:�א\+����3C�،��Oא�ن���NPF�! Hashtable �0sو�U�z$� وא3��,������i+$אم�א�وא�3�:�!�h����� �����U�l�NFא $Hس� Remove و Add,AddRange א ��Q$��7 א ���:! Iو

���� �. א �� �

2.3. Queue

5P �h�BZ :��Uא �H'��1،�و�03א����9א����£�����א���!�Lא��BZ Queue ��3 ��9[س����s'��53אن�אل א:� ��h����� �א �د!0 ��Q����� ،� �!� H'���� 9�� 'S אم$+���� Enqueue אم$+����� �g%א�Iوא�Dequeueول�C� ،

�'S�Y�Iא$ ��7�7 אول�א��5RN!�Y%Hא�H'����5D�E$R����NS .� �

23�����234���Nل �ذא��'b' ����� ����3�����א�9�H'����U��g�Mאن�������1 ����7���hא ��5F!�،�z Fא�� אو�9

Page 207: خطوة بخطوة مع فيجوال بسيك دوت نت

207

�א,��gא3^���אل �}Hو�،� �MQא�hא�!� ���� ( א\��©(�S'�א 4و���'�U�، Queue �Hא�h�Fg\א�G�������Q���� �S�H'��1'�א�ولאد� 9'bא�ول�و� ����א\��©�، �k�I �h����\א��(��U�:א��@N��9�5P � ،�iH'b�a����� �W�ONא

53�$Q$� N)�م�אل א�NS��^Q$L¤�א��!�sא��Q' ������K^3�hא9و ����slides 9 א ���b�Nא �U��PR���tدI'ل�א

�. א�...��i�3وא�$�W�ON����Q task��iאل �

� Q���9$�אن�� �� �KPTא���z F� א�،��ZONض����'�Hא^��$�� :� �� �

#C كودQueue empQueue = new Queue(); employee temp=new employee(); for (int i = 0; i < 10; i++) { temp.userName = Console.ReadLine(); empQueue.Enqueue(temp); }

� � VB كود

Dim empQueue As New Queue() Dim temp As New employee() For i As Integer = 0 To 9 temp.userName = Console.ReadLine() empQueue.Enqueue(temp) Next

KF�א�ن����NF.�' Loop KF�N Dequeue و%��،���`$�אن�אول��I��kوCن�'P���9'Iد�YO&'\א�.�@N��9�������U��S�Nא $Hس�א ���������P3�� Countא��+$אم�����א�C K^3�*j�Vن�,�t �. وI !:�����א �

� ��Kא ��Q�gNא,�!����a7אن�א $א. Dequeue � 3��,��53�iא ��3C�،�H'��1א $א�:!Wrא�ول�و�7'م���VN� ���$�א

Peek אول�$�����g! ن����F��H'��1 �. �U��VNDא �G��Zو ��gNP���U�:��ªOא �

� ،� �JO �א lWS� ���1�� 03C� �N�� ' � ��W�� �א�� 5&� $.� ��Hد Data Structure�� �אل ���1�� ��Oو��Queue����� circular queue ،�وאل linked list ~א ����+$אم�^P O��2D���5����:وא��JO ���WN3א�ن�!D�V$א��lWS�03א �

� �

Page 208: خطوة بخطوة مع فيجوال بسيك دوت نت

208

2.4. tackS

��K^3 Queue ��N7��0אل�Q�:א�� �D$א �F�! LIFO - Last Input First Output �U�Iא���VN� ����אن�א�، Peek ،�אل pop و���Qא�Iא%������g+$אم Push א $I'ل�S'�א�ول��Uא��وج�،����Qאد�Iل�א �������b�N+$אم

�א�ول �VN� �א ��Dض U� �S� �F�� �g�Fg}� � �7'م �Iא�� �N� ��� U� 'Sאلو� 53� :!W�� �دون 9'Iد Stack.�

� �oQ��� Stackאل�� �KPTא������������Q :� �

#C كودStack jobStack = new Stack();

� � VB كود

Dim jobStack As New Stack()

: االستخدامات

H'V��Kg�Q אل�K%�53א�h�3א��+$א Queue ،�� ������Nא �'�n�D�$F������3ذ�h�7���� ،�ذ ��אن�1���(�3��

��$א ��P����}H'ن Stack א 'אC�Kbو��9$م�אو�9،� �5Pאل�U�N\א��j$�} ��N�����U�:7��1��z�T �������אQ�����7�7،� Wא�!¦ن�א��+$אم�אلLא Stack U��V�7Q ��'��3'P 1���h�7א��n�D�iد�� �. א �

CK ��Kא\��د�U�h9א 4و���'�H،��ن�א\��د � � Stack��aא��+$אم��'S :� �A + B � �

KPT ���H'�4و�� � �$����KIא�� �: א �AB+� �

�����X'��9א�אWS�nF�Q� postfixU��k�Iאد���Q�H'�4و�� stack ���Q�5 ،�و�Uא��SW�ONאن��������SW�ON�

�. א�G��Z� Compilers �MQא 'b'ل�،�3^�ل����B���U��Iאل �

KQ'R� �א ��O��� �s'Q� 23����� h�7!�\א�U Y� postfix و infix ��^ �^ �א �.�O ��Uא ���P �א 0QH�T3� $��א ��ن¡��N�D'F�s'Q�، U��g�s'��H'�4و�� ��H���I و�stack �.�،��SW�ON א ���O���23��4א ��KQ'Rو��7Q���O'م�א

View3'ز�� و<��NPא��FgN����F�!�H���I9 ��9��אض����D��Dض�א�1'א��NP>�،�hא�����KL+$אم�אH9.�م�אو�א!�N �������א ��53�iW�.K�b�Oא�n�DאF�g3��Nא��ذא��WS .� �

� � رابط

http://vb4arab.com/vb/uploaded/3/21207604046.rar

Page 209: خطوة بخطوة مع فيجوال بسيك دوت نت

209

3��,�WS�53�iא�א\'.�0�KQ'R� �:Cو�<��NPא�� ع�����FD�2����n�Dא �� �

رابط

http://scriptasylum.com/tutorials/infix_postfix/infix_postfix.html

0.'3�U��S${�K�b�O� �: �53�$Q�3 MSDN �NSא �� �

رابط

http://msdn2.microsoft.com/en-us/library/aa289149(VS.71).aspx

��D������1NQس�H$ ���3���WS�Uא�א�K� Data Structure א1�9 ق��NP>�، ��N���17ذא��N �lWS�53אא^����3� KIא$�Q�W �א _�� �א �WSא 5D� ^P �א �!��3�U�G��� � ،��\�D�U�n�D� ���13� ��P'ن �אن ¤$�O��

����אل��!�sא������:�א Algorithms .�� � C�����f��Q��3�¤�NS��MQ�System.Collections.Specialized�A�Iא�h�J!�n�D�'�d�53��7 و�T3��VV§��^א�

�7��� �. א �h�JOא �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �

Page 210: خطوة بخطوة مع فيجوال بسيك دوت نت

210

� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �

Page 211: خطوة بخطوة مع فيجوال بسيك دوت نت

211

� �� �

� �� �� �� �� �� �� �� �� �� �� �� �

net. في البرمجة المتقدمة� �� �� �� �� �� �� �� �� �� �� �� �� �� �

الباب

12

Page 212: خطوة بخطوة مع فيجوال بسيك دوت نت

212

� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �

Page 213: خطوة بخطوة مع فيجوال بسيك دوت نت

213

�U���4 ���gN3�.net 2008א�$Q$�א W����g&ول�WS�U.net�03�i�3א�א ��b�ND�����n�D�f�����f'��KVOא�X�� ��3��،� Wא�.WS�U��Q'���g��F`����NFא�אD'���3$7�3��gNP � �و.�i3'%'د��b�ND��gN3و�a7!.� �

� �

1. Generic �א $Hس��03وא�$�53�iא �H'1א�hא�$�03�i$Q'א ��S�،� genericsאلWS�U�Kb .net framework 2.0א

�����1�$א�%$Q$א�\gO'م�אل overloading ضZON �، � �� �KPTא����D��1� ��3�9�^3 :� �� �

#C كودpublic static void print(int x) { Console.WriteLine("Print As Integer {0}", x); } public static void print(long x) { Console.WriteLine("Print As Long {0}", x); } public static void print(string x) { Console.WriteLine("Print As String {0}",x); }

� � VB كود

Public Shared Sub print(ByVal x As Integer) Console.WriteLine("Print As Integer {0}", x) End Sub Public Shared Sub print(ByVal x As Long) Console.WriteLine("Print As Long {0}", x) End Sub Public Shared Sub print(ByVal x As String) Console.WriteLine("Print As String {0}", x) End Sub

� �KF�م���.��sوא�'S��Fد��'P � �Eدوאل��ON@�א7��9���9��ل���Z�3Hא��O����h،�وWPSא�}$�א�������U�0�1 א

H.�م�אو� K א P'د��D��1 1��longs �D א��$�z�Dא $א ��א �h���FD�i$D�X�%�،ص�'VN� S$�א�'אع������Oو,� אو��� �� ���Kא\^�ل�א�وא��3א��n�D�،��D��1 �: ���Bא �

� �� �

Page 214: خطوة بخطوة مع فيجوال بسيك دوت نت

214

#C كودprint("Ahmed"); print(12); print(1000000000000);

� � VB كود

print("Ahmed") print(12) print(1000000000000)

� �

� �� �KPTא����D��1 : ��P'ن�����2א

� ��א\gO'م��'Generics ،��D אلq�� �K��،�hאq�\�53��אN��3��D'��K�7����9�� ����אن�������P3א�ن�����oQدא�S K�7��� <T> E ^ � و����WS�n�D�:�3�K3א�א��9س�،� Wא�.$�����0�1א!Zאض�א $وאل�א�� ����7 �KPTא��� � א � #C كود

public static void print<T>(T x) { Console.WriteLine("Print As {0}: {1}",typeof(T), x); }

� � VB كود

Public Shared Sub print(Of T)(ByVal x As T) Console.WriteLine("Print As {0}: {1}", GetType(T), x) End Sub

Page 215: خطوة بخطوة مع فيجوال بسيك دوت نت

215

���Uوא�ن�@ON ��N7��1��� � �� ���2��N �: א\^�ل�א �����،��'PQ�f'ن�א �

� �

1.1. Structure and Class Generics

��n�Dאل �N!�������� 1���אل �U methodsא $Hس�א��t �אل Generics א �MQא� ، Classes وאل Structs

1����WSא�א\gO'م���gNP> ض�3^�ل�אلZON��،��g��h����� ����א class אل�n�D���1NQ��3و class �n�D���1NQ�. struct אل �

ZONض��J!�'��אن������0j�M،�و ��d�0j�M'�א N'ع�א�ول��n�Dא���9و�n�D� ������Sא $�53�YD'���NQא��Q�t ��0j�Mא ���H'د�،� و��i�S�%�A�IC�0j�M��'�n�D)�א�'ع��53א��¹אو�א ���د�(��א]U��g��NV��K א א

K7���lWg� Identify 0j�Mא ���7Q�1��2�Nאن� �. و'�d�$. A�IC�0j�M��U��.H��n�Dא�����U���א �

4��� ���71 �Q$R$�אذא�Y�J!��VON3�ºو%'د� א�KLא ���7$���ن�N3��F�.�0sو�fو�( ���5אC�Uو�C�،��N���3

�03�5Pאل numbner אم���K7אل name ����+$م���K7אل�، Generics م'gO\א�אWS��q��� �lWS�U�،��� �Lא����V�JO �א�� �KPTא��� :� �

#C كودpublic class product<T> { private T Identify; public product(T val) {

Page 216: خطوة بخطوة مع فيجوال بسيك دوت نت

216

Identify = val; Console.WriteLine(Identify); } }

� � VB كود

Public Class product(Of T) Private Identify As T Public Sub New(ByVal val As T) Identify = val Console.WriteLine(Identify) End Sub �End Class

� وא�ن�<�53�5j���oQ����cNPא N'ع�א�ول�� �KPTא�� :� �� �

#C كودproduct<int> prd = new product<int>(1001);

� � VB كود

Dim prd As New product(Of Integer)(1001)

� � � Cو�53�� �KPTא������^ �: א N'ع�א �� �

#C كودproduct<string> prd2 = new product<string>("Some Product");

� � VB كود

Dim prd2 As New product(Of String)("Some Product")

1.2. Generic Collection

�N��P3��� �אن ���� ��Uא $Hس�א �N!���� �F� KFD Generic Class KFD�n�D� �א�ن Hو$ �א ��bא� ، Generic

Collection��KF�7'م��N��،�J! K�7���i$D��h�J!K^3�h���FD�i$�7'م��Qو� Add,Delete ... etc ��NF���� �F�� ،،��7��� n�Dא�3^�ل�WS Collection �3 :� �

Page 217: خطوة بخطوة مع فيجوال بسيك دوت نت

217

#C كودpublic class MyCollection<T> { private List<T> myList = new List<T>(); public T GetItem(int pos) { return myList[pos]; } public void AddItem(T it) { myList.Add(c); } public void ClearCars() { myList.Clear(); } }

� � VB كود

Public Class MyCollection(Of T) Private myList As New List(Of T)() Public Function GetItem(ByVal pos As Integer) As T Return myList(pos) End Function Public Sub AddItem(ByVal it As T) myList.Add(c) End Sub Public Sub ClearCars() myList.Clear() End Sub End Class

53�^P ������P3����א�s!��א� �nF�Q��3א�WS�،�:! Iو��R�� � bא�i�!'�3�q א�j�V*�وH{������א�j�V*�א ��~ Generic Collection ل�אل$�� :��D� �א�F�D9د �7�9�K�����<�3�U�5Pא Colelctions ����� �Qد�� א

K�7��Q�5אن�P> Car אو Employee .... KPT ���،�hאH�53א����� 3^ �����ذ�� �� �: א �� �

#C كودMyCollection<Car> myCars = new MyCollection<Car>(); myCars.AddItem(temp); MyCollection<Employee> myCars = new MyCollection<Employee>(); myCars.AddItem(tempEmployee);

� �

Page 218: خطوة بخطوة مع فيجوال بسيك دوت نت

218

VB كودDim myCars As New MyCollection(Of Car)() myCars.AddItem(temp) Dim myCars As New MyCollection(Of Employee)() myCars.AddItem(tempEmployee)

� �n���: אH.�م Cو� �

� � #C كود

MyCollection<int> myCars = new MyCollection<int>(); myCars.AddItem(12);

� � VB كود

Dim myCars As New MyCollection(Of Integer)() myCars.AddItem(12)

�N �h�g&� �NS ن�אل'P�������� ��PT3 Generic Collection K^3�*j�VI�n�D�'�d� �Nא��ص�� .name

Sو�،� �gs�� �KP � ^3��!'�Q�9� �3� �Nא Wh�JOא�hz�%��NS�53�،� وא Where �t א ��F�Pא]`'زi �אو� H.�م�3^ . ��U��gND�E$R�Nא $Hس�א �7دم

� �

Where Tاستخدام .1.3

WS��Nא�א �Tط��KFD�Uאل����Q Generic Collection �$�אن�7��9���A'��K���א ��NNP>�،�h�JOو�0sא �Tوط��[� ��א �1ق�א� :� �

� ��א �Tط �nN�\א� �

where T : struct� �hאq�3�A'��K�7Q�9���r ع'N � ValueTpe �53א �where T : class� �K�7Q�9 ع'N ��53�A'� RefernceTypeא �

where T : new()� �n�D�'�d�$��9אن� Constructor � �where T : classname � �

where T : Iinterfacename� �1�� PQ class'ن�53���T3 �$��9אنQאو��Y�3 interface

Y�3 .� �� �

�Q'��� �� �A�Nא\^�ل�א�،��gM���03وط��,�i$D�23د��NNP>��7Q�1 �: ��lWgא �

Page 219: خطوة بخطوة مع فيجوال بسيك دوت نت

219

� � #C كود

public class Example <T> where T : class, IComparable, new()

� � VB كود

Public Class Example(Of T As {Class, IComparable, New})

1���א 'א%reference �g �$��9אن��P'ن WS Tא��c�Qאن��، IComparable n�D�'��و Constructor .� � C� �� �: MQ��א\^�ل�א �� �

#C كودpublic class Example<K, T> where K : class, new() where T : IComparable<T>

� � VB كود

Public Class Example(Of K As {Class, New}, T As IComparable(Of T))

� �� IComparable אن��1���א 'א%constructor �F�! T $��9 �g وRefernce �k �$��9אن��P'ن WS Kא��c�Qאن ���bوא�ن�،�א U�z�T �`����P3�� T 0�Fא ����PR���א���'�O3��g��%�53�9$� .� �

� �

2. Delegates

����03��NאلH�Kbא'� advanced .net programming ، ���$D'3i�\א�lWS�03אل� Delegates.�� �v�T7'م��N��،��g�3�K3��� ���gو�����Oא�����v�Tאن���K�. �g3ذא��7'م�����+$א�\ .� �

K� ZONض��i$Dدوאل����7 int $��و� int n�D��Sو�،�KQ'R� � א�h���F����b�I��MQא�� �: א �KPTא �

� � #C كود

public int ConvertEGToD(int EG) { return EG * 5.45; } public int ConvertRSToD(int RS) {

Page 220: خطوة بخطوة مع فيجوال بسيك دوت نت

220

return RS * 3.75; } public int ConvertEGToRS(int EG) { return EG * 1.45; } public int ConvertDToRS(int D) { return D * 3.75; } public int ConvertDToEG(int D) { return D / 5.45; } public int ConvertRSToEG(int RS) { return RS / 1.45; }

� � VB كود

Public Function ConvertEGToD(ByVal EG As Integer) As Integer Return EG * 5.45 End Function Public Function ConvertRSToD(ByVal RS As Integer) As Integer Return RS * 3.75 End Function Public Function ConvertEGToRS(ByVal EG As Integer) As Integer Return EG * 1.45 End Function Public Function ConvertDToRS(ByVal D As Integer) As Integer Return D * 3.75 End Function Public Function ConvertDToEG(ByVal D As Integer) As Integer Return D / 5.45 End Function Public Function ConvertRSToEG(ByVal RS As Integer) As Integer Return RS / 1.45 End Function

� �

Page 221: خطوة بخطوة مع فيجوال بسيك دوت نت

221

E ��Y�� �O��+\א�h Q'R�� � �دوאل����+$م i$D��g!� ،� �!��(�9� �F� ل��Q� �א\�V�وא ��Nא�� ،�h FD�PQ�3א��H9و$ �. א ��'د�وא �

� �U��g�FD��NNP>���� ��5���KFD�0�1ذ ��3^ ��03دوאل ���NNP �،�KQ'R� �<^H�K.��אq�3ل���Hوא�i$� دא ��وא

Wא�!Wgא�א\^�،��Oא��4و�����s'�� �. �ل� �

�و���53 ������53�hא\��+$م�، �א C�7N�� �N������Uط א�ن��,���Bم�$+��� if אو switch �� �Q$R$�א�دא �WS�،��gא��h����� �P'د�א\7N� X'�P'م�����Hل�א��V�� :� �

� � #C كود

if (Operation == 0) result = ConvertDToEG(userInput); else if(Operation == 1) result = ConvertRSToD(userInput);

� � VB كود

If Operation = 0 Then result = ConvertDToEG(userInput) ElseIf Operation = 1 Then result = ConvertRSToD(userInput) End If

�!�a7א�ن��'د�3��!���'ع� �Nض�א�ZON �5P �و�gs�Dو �SW�ONدون������F� �،�WSא� א �7�9��SWONN����� �F��+$م�i�3� ،�Y��3�H���I9א�hאW7'م��N�� �Nא��c�Q �U���3��O���9C� �MQא� ،����F� ��W�ONא�i�3+$م�و��א\�n�Dض����

�و��3د�9��3�����A'��ªO.��אل א���.$����ج ،�YO����Y��P3�U�Y��3����F� ��W�ONא Operation ذא��A�IC�i�3ط��T ��1 ��KB�KFאM�� .� �

�.WS�K%C�53 Delegatesא�و%$�hאل �

� �

Delegatesتعريف ال .2.1

oQ��د����Hא�' Delegates lWSن�'Pאن���:� ��Z�3Hא��D'F¡ �hدوאل�،�אول������3ج�� א $وאل�D�@O��53$د�אCאل�@O���k��MQ input وאل output ن�אل'Pא���W �، Delegate א�� �� �KPTא����N ��:�ص��$وא �

Page 222: خطوة بخطوة مع فيجوال بسيك دوت نت

222

� � #C كود

public delegate int myDelegate(int value);

� � VB كود

Public Delegate Function myDelegate(ByVal value As Integer) As Integer

� ���Q'O� Wא��א $א ��א\�pول���gND،−א ��BZ ��ن��Rb−وא�ن�����B�U���D��3�Kא �����Tאن�א�$د�Wkא�א�

� �� �KPTא���i�V�+\א��Nن�,�و�'P�� � �� �

#C كودif (Operation == 0) { myDelegate aDelegate = new myDelegate(ConvertDToEG); result = aDelegate(userInput); } else if (Operation == 1) { myDelegate aDelegate = new myDelegate(ConvertRSToD); result = aDelegate(userInput); }

� � VB كود

If Operation = 0 Then Dim aDelegate As New myDelegate(ConvertDToEG) result = aDelegate(userInput) ElseIf Operation = 1 Then Dim aDelegate As New myDelegate(ConvertRSToD) result = aDelegate(userInput) End If

I]�����P3��� �MQאل א�W�ON7'م���Q�W �אIط�א��T �Delegate A�IC�i�3 א �g3א��+$א� Hא�P�� �אو ،� �Q�gN� �،����אن�אل aDelegate lWS�W�ON���*�§�� ��f�����Rא�دאbא�ن.$�א����F� Wא�<��������NPא P'د��א�،��� �� �KPTא��:� �

� � #C كود

if (Operation == 0) { myDelegate aDelegate = new myDelegate(ConvertDToEG);

Page 223: خطوة بخطوة مع فيجوال بسيك دوت نت

223

} else if (Operation == 1) { myDelegate aDelegate = new myDelegate(ConvertRSToD); }��// �NS��3א�وא�����WO���result = aDelegate(userInput);

� � VB كود

If Operation = 0 Then Dim aDelegate As New myDelegate(ConvertDToEG) ElseIf Operation = 1 Then Dim aDelegate As New myDelegate(ConvertRSToD) End If�‘�NS��3א�وא�����WO��result = aDelegate(userInput)

� ��C�W�ON��53��g�N��n���� �א��$�z�Dא $אI]���NP>�،א�WPSو�$�]� Cوא��3��3���1دون�אن�������C�53���7��$�א

�i$��.�lWS�،�A�IC�i�3وא � ��DelegateONوא ^�����<�KFD��NPא �[�$��Uدא �����VON3وא�Dد�iאل���S�%��KF� ��א���Uא�^��$�OQא�WS�،�W�

�h�D'F��KP,�n�D.� �� �

Eventsاألحداث .2.2

���$ND�o&'3���Y�3�E$��KF�א�ن�אن��7'م����N��%�' )�א��...���د�Eאb$אم�C�)و�9�����(�iHא�� ... �3ض(��Q���5D� �7����� W7'م���� �N� Delegates����� Event �� �و�7'م�����Q�Fא $א ،� :�،�و�ذא�3^ �E$L����bא��

U����'��$.��N� אل Delegates KFD�0�1��3��!��א�����n�D�Hد�.���]! List��SW�ON����t 9�$א�Eא��

�. WS�n�D Delegateא�אل �

�7Q�1���3א������Nא�ن�� iא]`'ز��F�P �... ��Q���5D�i$Q$% Eventא �U�f��N� �Qא$� ����3 ^3�iH�pول����5D!��א��$א�Eא Delegate א�KV��t �KF� �Delegate�*��K�7��Q�

��א\�1'������ �:א �

Page 224: خطوة بخطوة مع فيجوال بسيك دوت نت

224

� � #C كود

public delegate void CarEventHandler(string msg);

� � VB كود

Public Delegate Sub CarEventHandler(ByVal msg As String)

Eא$��: وא�ن��7N'م�������oQ���א9 �� �

#C كودpublic event CarEventHandler Exploded; public event CarEventHandler Damaged;

� � VB كود

Public Event Exploded As CarEventHandler Public Event Damaged As CarEventHandler

� �� �� �KPTא����g�!�E$�������I�53 ل�א P'د���W�ONא����NP>א�ن� :� �

� � #C كود

Damaged("my car");

� � VB كود

Damaged("my car")

�MQCوא�H���Iא��NP>� event==null K��،�\��!���KSא ���3�iH^ � ذ ��Cم�9 אم��9\��!���ذא���ن���א� .:�.3$C��Sم��9���.� �

�!�s9�،��17���I� E$Lא�� �:����א �5j�P دא �

� � #C كود

Car.EngineHandler d = new Car.CarEventHandler(CarExploded);

� � VB كود

Dim d As Car.EngineHandler = New Car.CarEventHandler(CarExploded)

� �

Page 225: خطوة بخطوة مع فيجوال بسيك دوت نت

225

�� �����oQ������Qא $אCarExploded�W ����n�D�z�Nא N*�א\���Kوא��H�H�g&א��Sא\�1'���و��Fg\א�W�ON� ��E$Lא�U�: ��Hא��Damaged� ^3�� �� �KPTא���،�:� �

� �� �

#C كودpublic void CarExploded(string msg) { Console.WriteLine(msg); }

� � VB كود

Public Sub CarExploded (ByVal msg As String) Console.WriteLine(msg) End Sub

� �

C #فقط في Anonymous Methods ـال .3

$.��N�5אل �ذא��D����� ���א $Hس�אD'א�� Delegates �D$א������P3ن���C�¤H$����]!אم$+������ � �zدאq�3�. Delegate �53א N'ع �

Xس�א��ص�H$ ��K^Fא�E$Lא W�Events �:��4���F. و��$�א�� �H$���R¤�אن�������P3א�s!��א���دאbאKPT �� ^3�� �� �: א �

#C كودt.SomeEvent += new SomeDelegate(MyEventHandler);

��� Wאوא�ن� ZONض�א���Q���9$�א��$�z�Dא $א�،�a7!ن��P\א�אWS�U�A' �53و�� ��P'ن��53א\�oQ����o�Pא $א

U� �Sz�D$א����� Delegate f��Q� �3� �N � �g(Q� �NS� ، ���� Anonymous Methods �oQ�������P3�������. א $א ��و��aא P'د �

^3�� �� �A�Nא P'د�א :� �

#C كودt.SomeEvent += delegate{ Console.WriteLine("Some Text"); }

Page 226: خطوة بخطوة مع فيجوال بسيك دوت نت

226

03�a7!�5P ����Rbو �!WS���� C# . �F� �،�a7א �g33'.�0א��+$א�U�� ���א�ن����oQ�������P3א $אbא�A�� ���5P> ^3אMQ��אن��P'ن�� �KPTא���hאZ�3H���i$D�K�7����� �: א $א �

#C كودt.SomeEvent += delegate(object sender, CarEventArgs e){ Console.WriteLine("Some Text {0}",e.msg); }

Cن�אل�P3����MQ Anonymous method �g�!��gOQ������t א�hא\'%'د�U�iא $א ��אq�\א����KVאن�� .� �� �

استنتاج انوع المتغيرات .4

�UC���אل���'`�O �دون��$�Q6$Qم�אq�3�oQ����n�D�5QHد�.��N��،� � �� �KPTא���:D'� :� �

VB كودDim x x=10

3�$�53���jא N'ع 'א.���0ن�א �O`'אل������Uא��gOQ��7'م���Q Object U��D'N���39א�אWS�K^3ن����Y��U�،

�� ����j�D�0א���t �. א ��h�qא �

03�.net 2008�، ^3�� �� �KPTא���:D'��$Q$������%�Lون�א$��q�3�oQ����XH�,��� ������P3ن�אbא :� �

#C كودvar x = 2.3 // double

� � VB كود

Dim x = 2.3 ‘ double

�.�د�K"�n�D�Hאq�3�oQ����'S����F� �5��5�HWא�،�!�3��NP>�5^ � א�lWS�53�f$kאP �،�h����� �'ع��53אoQ��� var אو�،�i�,��3��JO �5 Z�3H���U return value Kא�hא $א ��Cو��Uאل �UאP>�9א�IC�،��k var ن�CKFd �F�. = null .� �

t ��®�0Fא��z�1Iא�� �: !��5P>�9 var �gא��+$אم א\^�ل�א �

Page 227: خطوة بخطوة مع فيجوال بسيك دوت نت

227

#C كودclass classname { // OQ����5P>�9:i�,��3��JO ��Uא

private var varInt = 10; ���Z�3Hאو�¤ //��oQ��� . �5P>�9 return valueא

var functionname(var x, var y)�{�} void somefunction() { // 9�F�.�KFd�5אن�P>� null

var varNull=null; // �F�.�KFd�5אن�P>�9��7Q�1 null و���lWg��nא

var? varNullable = 12; // �F�.�Y����53�$��9

var m; } }

� �

Extension Methods الممتدة الدوال.5 �I�53'אص Extension Methods ~א i$������ net 2008. وא ،� i$Q$א� א��lWS�� �n�D�KQ$�� �א ��b�

i$Q$%و�دوאل�C�� �7��وא�s!��دא�3�i3'%'د�h�J! .� �

�JO� �� ZONض�א�Q����N$�א�s!��دא string م$+����� �7'م��� �[���Rb�53�$א Q4$�א9 ZPو���،��7N'م����KFدא

Regex� ^3�� �� �KPTא�� :� �

#C كودpublic static class Extensions { Public static bool IsValidEmailAddress(this string s) { Regex regex = new Regex(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$"); return regex.IsMatch(s); } }

� �

Page 228: خطوة بخطوة مع فيجوال بسيك دوت نت

228

VB كودImports System.Runtime.CompilerServices Module StringExtensions <Extension()>_ Public Function IsValidEmailAddress(ByVal s As String) As Boolean Dim regex As New Regex("\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*") Return regex.IsMatch(s) End Function End Module

� �

q�3�oQ����������KP���NNP>�،وא�ن� string � �� �KPTא�� :� �

#C كودstring mailExample = "email@mail. com"; MessageBox.Show(mailExample.IsValidEmailAddress.toString());

� � VB كود

Dim mailExample As String = "email@mail. com" MessageBox.Show(mailExample.IsValidEmailAddress.toString())

6. Automatic Properties

��Get ^3 و 7���N� Set'م������oQدوאل 7���z�T Properties��و�53א%�Kא��� �KPTא�������P ��7א�izوא :� �� �

#C كودpublic class myclass { private string _name; public string name { get {return _name} set {_name=value} }

� � VB كود

Public Class [myclass] Private _name As String Public Property name() As String

Page 229: خطوة بخطوة مع فيجوال بسيك دوت نت

229

Get Return _name End Get Set _name = value End Set End Property End Class

���������������P3א P'دbא�ن�א � �� �KPTא�� :� �

#C كودpublic class myclass { public string name{get; set;} }

� � VB كود

Public Class [myclass] Public Property name() As String Get End Get Set End Set End Property End Class

� �� �

Lambda Expressionsتعبيرات المدا .7� �

�U� �N�$�� $.� �N�5D������ ��P3�Uن� א s'3 Anonymous Methods �NNPe�t'ع � �א $א ��'د ������53،�a7!�i$� ��5���i�3�A'���g�D$وא��N3��3د��Sz�D$א�� �K�7��t ��5D��Rא�D$אد�א ����g�!7'م����!'OV3ض�ZON

�n�D��F�7 �: 2א �� �

#C كودstatic void TraditionalDelegateSyntax() { List<int> list = new List<int>(); list.AddRange(new int[] { 20, 1, 4, 8, 9, 44 }); Predicate<int> callback = new Predicate<int>(IsEvenNumber);

Page 230: خطوة بخطوة مع فيجوال بسيك دوت نت

230

List<int> evenNumbers = list.FindAll(callback); Console.WriteLine("Here are your even numbers:"); foreach (int evenNumber in evenNumbers) { Console.Write("{0}\t", evenNumber); }�}�static bool IsEvenNumber(int i) { return (i % 2) == 0; }

� � VB كود

Private Shared Sub TraditionalDelegateSyntax() Dim list As New List(Of Integer)() list.AddRange(New Integer() {20, 1, 4, 8, 9, 44}) Dim callback As New Predicate(Of Integer)(IsEvenNumber) Dim evenNumbers As List(Of Integer) = list.FindAll(callback) Console.WriteLine("Here are your even numbers:") For Each evenNumber As Integer In evenNumbers Console.Write("{0}" & Chr(9) & "", evenNumber) Next End Sub �Private Shared Function IsEvenNumber(ByVal i As Integer) As Boolean Return (i Mod 2) = 0 End Function

K ��N3�03א��+$א Anonymous Methods 53 C# 2008 ��bא f�����F��� �� �KPTא����g�������N�D�1���� :

� � #C كود

List<int> list = new List<int>(); list.AddRange(new int[] { 20, 1, 4, 8, 9, 44 }); List<int> evenNumbers = list.FindAll(delegate(int i) { return (i % 2) == 0; } ); Console.WriteLine("Here are your even numbers:"); foreach (int evenNumber in evenNumbers) { Console.Write("{0}\t", evenNumber); }

� �U�$Q$א� .net 2008 �����f��Q� S Lambda Expressions �KPT'�א��+$אم��3��� �g������5P>�t �وא ،

� �� �: א �

Page 231: خطوة بخطوة مع فيجوال بسيك دوت نت

231

� � كود

X => f(X)

$����t Wא���P'ن�א $א ��א����N���bوא True � ���U i%2==0 � �� �KPTא�� :� �� �

#C كود(int i) => (i % 2) == 0;

� � VB كود

Function(i As Integer) (i Mod 2) = 0

����אن�אل i �S :D'و��،�Z�3H�� ����Z�3Hن int א ���nא��oQ����5D�z�Nq��9'ع�א��NP>�، Lambda �f'�� �� �KPTא���K3�P Wא���P'ن�א P'د�א�،���j�7���:��D�f���� :� �

#C كودList<int> list = new List<int>(); list.AddRange(new int[] { 20, 1, 4, 8, 9, 44 }); List<int> evenNumbers = list.FindAll(i => (i % 2) == 0); Console.WriteLine("Here are your even numbers:"); foreach (int evenNumber in evenNumbers) { Console.Write("{0}\t", evenNumber); }

� � VB كود

Dim list As New List(Of Integer)() list.AddRange(New Integer() {20, 1, 4, 8, 9, 44}) Dim evenNumbers As List(Of Integer) = list.FindAll(Function(i) (i Mod 2) = 0) Console.WriteLine("Here are your even numbers:") For Each evenNumber As Integer In evenNumbers Console.Write("{0}" & vbTab, evenNumber) Next

return value:

�@�!�a7א�Dد��F�.�iوא�$C�iو��NNP> true , false �!��NP>�،�a7א�9 ع��n�Dא\^�ل�א�� :� ��� �

Page 232: خطوة بخطوة مع فيجوال بسيك دوت نت

232

#C كودList<int> evenNumbers = list.FindAll((i) => { Console.WriteLine("value of i is currently: {0}", i); bool isEven = ((i % 2) == 0); return isEven; });

C�NNP>��MQ � ���Gא $א�� ... ��Q�eא�^���Z�3H���53،�وذ

� �

:Lambdaمواصفات −����e�9Lambdaא�������b�I��.

�.C�Overridesو��5P>�9OOP�K^3�Overloadsא��+$אم�����3��د¨�אل��−

א��9AS���j�7���h��+$م�.����−q�\ج�א��Nא�����Q�� �Q$R$��'ع�א ��F�7א\��د�iو�$�53�9ذ�.

−���MQC�� ��I��z�T،�و<�5Pא��$�z�Dدא�oQ����@� ���9$��53و%'د��'د�و��� .دא�KIא

3��,����Q�9Return�iא��+$אم��−�� .�����Q�Kא�Dد�i.���א $א

−��$%'Q�9Endو�C�{}�U�Lambda.�

�.�5P>�9Optinal�U�VBא��+$אم��−

�.��5P>�9�Genericא��+$אم�− �� �

Object Initializer Syntaxصيغ انشاء الكائنات .8�Q�����^3א�i$� א�WS�Uא�א $Hس�،�!�N��a7��ض�^��K�1��5 5D�� ���9א�*j�VI�'���t !��Jא\'&�YOא

G��\وא��F� �. وא �

K���: net 2008. א\^�ل�א�ول���3. �

#C كودpublic class Employee { private string _name; private string _age; private string _salary; public string name { get {return _name;} set { _name = value; }

Page 233: خطوة بخطوة مع فيجوال بسيك دوت نت

233

} public string age { get {return _age;} set { _age = value; } } public string salary { get {return _salary;} set { _salary = value; } } }

� � VB كود

Public Class Employee Private _name As String Private _age As String Private _salary As String � Public Property name() As String Get Return _name End Get Set _name = value End Set End Property � Public Property age() As String Get Return _age End Get Set _age = value End Set End Property � Public Property salary() As String Get Return _salary End Get Set _salary = value End Set End Property End Class

Page 234: خطوة بخطوة مع فيجوال بسيك دوت نت

234

� �03����^ �: א �U��S�NF����tدHس����� automatic property و����+$אم net 2008. א\^�ل�א �

� � #C كود

public class Employee { public string name{get;set;} public string age{get;set;} public string salary{get;set;} }

� � VB كود

Public Class Employee Public Property name() As String Get End Get Set End Set End Property Public Property age() As String Get End Get Set End Set End Property Public Property salary() As String Get End Get Set End Set End Property End Class

�א��+$אم ��و03�^ �א �Object Initializer Syntax 53 א\^�ل $Q$א��.net 2008��� �א 'b'ل $Q��� ،�

�*j�Vא�KPT �$�א �1ق�א ����U�،��7א ��������G�P���N'د���]���gOQ�����N �����t � א�� �: א �� �

#C كودEmployee e = new Employee(); e.Name="Ahmed"; e.Age=15; e.salary=6000;

Page 235: خطوة بخطوة مع فيجوال بسيك دوت نت

235

� � VB كود

Dim e As Employee = New Employee() e.Name = "Ahmed" e.Age = 15 e.salary = 6000

�: $�NS�$Qא� �

#C كودEmployee e = new Employee { Name = "Ahmed", Age = 15, salary=6000 };

� � VB كود

Dim e As Employee = New Employee With {.Name="Ahmed" ,.Age=15,.Salary=1500}

Anonymous Typesاالنواع المجهولة .9� �

U� i$Q$א��*j�Vא�� v�,� �א $Hس �WS�Uא Kbא'�� .net 2008n�D� f����� f'س��H$ �א �WS�Uא ،� Anonymous Types.� �

�NF�����Nא��n�N��9 �F�P ������+$אم�א'g��hאq�3�oQ�����N��P3אن��� var ��!א��3א�ن��،�XH�,��� ��$� �UאK�5א�� �،��MQא�� 'gא�'אع���oQ�������P3���K��a7!��Q'kא�� 'g��hאq�3 א\��3$7،�א��Uא�)�����א P'د��^

� �� �: א �� �

#C كودvar e = new { Name = "Ahmed", Age = 20 };

� � VB كود

Dim e = New With {.Name = "Ahmed", .Age = 20}

izא�.����P3�����bא�ن�א e.Name و e.Age �JO �. אb �$ون�����oQא ��אل ����! Anonymous Types ��� i�,��3� lد�Nא�� ��Q System.Object :Vj�VI�n�D�'�d� 'g!� Wא

�.א�����9 �

Page 236: خطوة بخطوة مع فيجوال بسيك دوت نت

236

.� �ماذا استفيد ؟ �

�ULINQ�oQ���� �NNP>��J!��������9و� �א��� م ��B�2���� izא�.� ��'د �Nض�א�ZON � ،� �א��9� م ��B�2��N��a����� �� �KPTא���� �:�$Q$א�,�KPא ���Q�،�2��Nذ �

� � #C كود

var result = from emp in employee select new { emp.Name, emp.Salary };

� � VB كود

Dim namePriceQuery = From emp In employee Select emp.Name, emp.Salary

� �

:Key Propertiesالخصائص المفتاحية

H'3C�i$����Qد�� �����5Dא��O\א�*j�Vא��o��§

−Y 'g��YD'��Y��iوא��א\���H�7\�a7!������O\א�*j�Vم�א�$+����

−a7!�iz�7א� ��Fjدא��g!������O\א�*j�Vא����.��q��5P>9�

−�~ �����5Fs��gN�FM����Qא��O\א�*j�Vא��a7!�Hash Code� 'g¡א��'אع�א�K%C�53��%Z\א�l$ 'Q�W ��.�א �� �

Equalityالمساواة

7Qو� �א¡g'ل �א N'ع @ON � hאq�3� ��P'ن �3$ND� �Qو���3� � 'g¡א� �א��'אع hאq�3� �{��P����3'ن �א\��© 'م��� �� O��53�5Q@�א N'ع��ذא��'!���Fg�!�hא �Tوط�אq�F��5Qq�3:

�.���Scopeא �O��U��FgND��Q�V@�אل�−

−�� �L���������zא������H�73ن�'Pو��G��Z �O���FgVj�VI����e@�א���9وא N'ع�و��א �ON���gND��Q�V@�א�f�� .א�

−��iد$)��g�!�*j�Vא��@O��������C�*j�V+.

−�K.א��n�D�i$� .�<�������K'ع�������C���b�Iوא

�a7!�:�ON ��Qو��ن�3'PQ������O3���b�I�C����>9ل�'g��5'ع��D��Q�V� �.وא �

������O\א�*j�Vא����.��q��5P>�9�:�C�@N��9��F�...� �

Page 237: خطوة بخطوة مع فيجوال بسيك دوت نت

237

� �

10. Partial Methods

� ��0sو�n�D� ��Uא�^���53א �JOوא�$�K��،�iאن����J�71N3�U� ����������P3א Q$,�H�V�I��O$�،�_���$�א�ن��4א

�P �0،�������OPQאن����+$م�אs'3F��Partialא�����U�JO �$ل��n�Dאن�WSא�l�@� ��J!�i$Q$%�0��Q�'S�K���J!�!��3�U� ^3�� �� �KPTא���،��Iن���P3 :� �

#C كودpartial class Car { }

� � VB كود

Partial Class Car End Class

� ��VD�03� �net 2005�������f��Q.���ن�WSא �3� �و ��5P�$�ذ ��&�Ip3��gא ،Partial Methods�$���_����� ،�

�� �� �KPTא���� �:�1M3א� �����Pא $א ���P3�Uن�وא�$�א���Q�،��MQذ �� �

#C كودpartial void methodname(string parm) { }�

� � VB كود

Private Partial Sub methodname(ByVal parm As String) End Sub

�،�ª� ���F������Cאj�VI��Q'1��U*�א �h�JOא������9ودوא���k$ون�א�oQ��������%�L !�د���WSא�א\'s'ع��^�gN3�i$Q$%��+�� .� �

Page 238: خطوة بخطوة مع فيجوال بسيك دوت نت

238

� �

11. Garbage Collector � �

�h�J!و�hאq�3�f�����N���7��� ��NNP_א��،�و..�I ل�دHو���Nא ���Q�n�3و�iא��W ��[ل��O��U��gNQ�§���Q�o����NאG�<�f'����J�9א�lWS�،��g!W���. GC وאل WS�U��g��D Object lifetimeא�א $Hس�I�53 ل����S�O3אل �

�J!�53�5j�P ��OQ����$ND OBJECT FROM CLASS ��¦! X��P�����V��0.א' �� refernce א�WS����TQ

U�5א\'%'د�j�P �. �Iص��� Q stack 23��4'%$�אWS�، reference U��MQא�אل heap �אلא �

��fWאل���Q�� 1�����S'�א�:� stack �53אل reference ��$�א� ق�א �23��4אو�א���z�gא $א ،���P'ن�א ���¯ل�אh�Nj�P �א h�J}� iא��W �א ±��e� f'�� � �Lא� lWS�Uאل و� �d�Q� ،� �k� TQ� 53� ${� 9�t garbage א

collector אH�V�Iא�: ��3�Q�W �א\��+��3$،�אو��UאGC ��7�7L وא��h�JO WS�53א�א ���¯ل�����7Q'م��fWrאfWr7'م�Q�'g! 23��4 �. �0�Bא �h�JOא ����P3���$�Q�_�tא 'b'ل�� ��53��gدא�KIא �

�אول��[ول ��ن��53א\ZOض�אن��7'م��U C++ fWrא�Qم�אل �3$+��3�q א���אq�303א�ن�� �א�3 ،� GC

�SW�ON����Qم��g\א�K%��R�b�! ��Tدون�אن�� .� �

��א��S��D'�,��^�9אن��7'م�Lא KF�� =null K �i�,��3�iH�,��1א�Q�9א�WS�0.א' �U�، GC �53��Nj���fWLא،�iא��W ���NP>�9��3��(L�U�:!Wא ���e��3$ND�،��g���PR±�א Wא��3�i^ א������:NP .� �

� �

GCلفئة ا .11.1 � �

�JO �GC �g�3 ��'�א �,���א ����K3א\ 53��NPe�t �א $אول�א 53� � D�n�D$د lWS� ،�X����53� iH'bPro

Csharp 2008�g��3وאل�وא��+$א$ : �א

Page 239: خطوة بخطوة مع فيجوال بسيك دوت نت

239

� �

Finalize():

E$Lא� �<KFD��NP ��53א.��Nص�و.���WS��NP>fWא ،�5j�P �overriding �K א.� �����א\�gم W�ONو�� : 5j�P 3$�א� .� �

� �� �KPTא���� �: ���Qذ �

� � #C كود

class example { ~example() { Console.Beep(); } }

� �� �

Page 240: خطوة بخطوة مع فيجوال بسيك دوت نت

240

VB كودClass example Protected Overrides Sub Finalize() Try Console.Beep() Finally MyBase.Finalize() End Try End Sub End Class

12. Operator Overloading � �

W�ON� ��O��+\א�h 3��\م�א$+����،��N �����j� ��U �53א�9'אع�אq�\א� ^F!�،��gN3��7�T\א�h�JO �n�D�h���FDא . א�...���n�Dא�:����n�D−�vא�:���gOQ + �،�0Bא\��Integer K3 �'ع

�MQ��53'ع א�hאq�\א String �q�\א��gO��+אWPSو�،�YV��23$ �. �n�D� ^3א�:� �

KF����NF.�' ��Point ^3 ��53'ع Structure א�ن��� �KPTא�� :� �� �

#C كودpublic struct Point { private int x, y; public Point(int xPos, int yPos) { x = xPos; y = yPos; } }

� � VB كود

Public Structure Point Private x As Integer, y As Integer Public Sub New(ByVal xPos As Integer, ByVal yPos As Integer) x = xPos y = yPos End Sub End Structure

Page 241: خطوة بخطوة مع فيجوال بسيك دوت نت

241

،��53 א �0F�� 2��Nو���vא �7Nط�،�����3'.�:�אن��S�T$−�אو�+�����7��i$D�oQط�،�وא��+$אم�א\��X� �K3א�ن�%

���v���5D�iHאلא\ZOض�Cن�PQ'ن�D x 53�����^ �،���9א���y �U א�و��و�Wא�אل �Uא ��17Nא ��3��Fg�Bو�C�،5 ���O��]1I$¤��[ن א 'א.�0��H�n�D�A'��KV� structure nF�\א Point �D$Q�9 v�1 � �h 3��3א��0Fوא �

�: א ���� structure א�ن��7N'م����0B�h 3��3��!�sو������vאل �

#C كودpublic struct Point { private int x, y; public Point(int xPos, int yPos) { x = xPos; y = yPos; }�public static Point operator + (Point p1, Point p2) { return new Point(p1.x + p2.x, p1.y + p2.y); } public static Point operator - (Point p1, Point p2) { return new Point(p1.x - p2.x, p1.y - p2.y); } }

� � VB كود

Public Structure Point Private x As Integer, y As Integer Public Sub New(ByVal xPos As Integer, ByVal yPos As Integer) x = xPos y = yPos End Sub Public Shared Operator +(ByVal p1 As Point, ByVal p2 As Point) As Point Return New Point(p1.x + p2.x, p1.y + p2.y) End Operator � Public Shared Operator -(ByVal p1 As Point, ByVal p2 As Point) As Point Return New Point(p1.x - p2.x, p1.y - p2.y) End Operator End Structure

� �� �: א�ن�<���������NP'د��� �KPTא �� �

Page 242: خطوة بخطوة مع فيجوال بسيك دوت نت

242

#C كودPoint p3 = p1 + p2;

� � VB كود

Dim p3 As Point = p1 + p2

��0B����Fאل��R�RV �. �n�D�KVR�� Pointsא ��N`��א �

CMQ�i�,��3�� �� �: �<���������NP'د��� �

#C كودp2-=p1;

� � VB كود

p2-=p1

�:��D�f���N���3��I�����Q��F�!'Sع�'s'\א�אWg���CA'א��Hن�.�د'P��5 ��� oQ����n�D Static function �53KFD�K%א overloading K3��3�� .� �

KFD� 5P>� 53� a7!� v�1 �وא 0Fא�� h 3��3� ��� overloading K�� ، �53� ��'ع ��� �ذ KFD��NP>� ^F!�،�h 3��\و�++�א−−a7!�XH�,��� �: ��Uא �

� � #C كود

public static Point operator ++(Point p1) { return new Point(p1.x+1, p1.y+1); } public static Point operator --(Point p1) { return new Point(p1.x-1, p1.y-1); }

�وO� �KFD@�א��3 iوא��وאل�א\$ � ���N ��� ==� �Cو =!KFD�03� �7���� �NF���� �3�K^3� ��7�7� overriding � �$א

Equals N��،� �� �KPTא���� �: ���lWS�n�D��NS�$Fא $א �

#C كودpublic override bool Equals(object o) { return o.ToString() == this.ToString(); } public static bool operator ==(Point p1, Point p2) { return p1.Equals(p2);

Page 243: خطوة بخطوة مع فيجوال بسيك دوت نت

243

} public static bool operator !=(Point p1, Point p2) { return !p1.Equals(p2); }

� � VB كود

Public Overloads Overrides Function Equals(ByVal o As Object) As Boolean Return o.ToString() = Me.ToString() End Function Public Shared Operator =(ByVal p1 As Point, ByVal p2 As Point) As Boolean Return p1.Equals(p2) End Operator Public Shared Operator <>(ByVal p1 As Point, ByVal p2 As Point) As Boolean Return Not p1.Equals(p2) End Operator

KFD����P3א�}$�אن���WPSو overloading h 3��\א�lWS�53�� :

� �� �� �

Pointers الـمؤشرات .13� �

2343��Nذא��� C++ nN�3�¤H$��$��]� �����]!�، pointer ' ��3C�، �����!�� W��5P��_�' ��3C�،�� W��5P��_وא �NS�، pointer type �*�§�t¤�אMQ��אل refernce type وאل value type אن�����fא�:����s9!�����אل

�. �U��N��3א Wא������iH�,9�� iא5��3 �

5 1�����،����9��1M���K+$אم �$אC��Qول�����3��!:�א��� ��KFذ �� �U��g�3�K3���� unsafe codeא P'د�א���� ����03�K3אل ����Cن�sאZ!א�� ��F���5 �XH�,��� ON�������+$א3 ،� Wא�.��אو���9 �pointers v�F א��g

� �� �KPTא�� :� �

Page 244: خطوة بخطوة مع فيجوال بسيك دوت نت

244

�NP>د�א��ص����'P ��pointers ^3 �������'د��03�K3���Qאل وא�ن�I�53 ل�א�� �KPTא�� :� �� �

#C كودclass Program { static void Main(string[] args) { unsafe { // Work with pointer types here! } // Can't work with pointers here! } }

��Kאن��q'ص��Uא�pointers���^3 א �n�D��NN�����tא ����03�K3אل א�ن���n�D�f���Nא�دوא�hא������. :� �� �

hא�دوא� �א��9+$אم� �*� �oQ��� �pointer ����+$م� �& �!��\ U�q�\אن�א'NDiא��W ��א �

->� �t �א �JO �א KIدא� �3� K7����� �'b'ل� ���+$م

���gאل��TQ pointer � �++ �،-- �،+ �،- �،== �،!=� �:! Iو���H�7\وא�hא�,p\�5אFs�¤�R� �.א �� �

��א ��oT�P��f'� unsafe code U�KFאن�א ����03�K3אل �03א���FאWS�U���Hא�א $Hس'g��@ONن��'PQ�5

safe code�53 ل�� I��Qد�� �.��,��XHא �

Page 245: خطوة بخطوة مع فيجوال بسيك دوت نت

245

� �

؟ unsafe code ولكن لماذا استخدم ال� �

• ��F���אض����C .� �����אل • �. pointers א �KF���tאI�53� b ل COM Components אو�אل dll's א��+$א��3 � �Wא���iא 'b'ل�א\�� (�و �����Yאدא�zو��I�53��N��3��Fg3��D ل •��,.� �� �

izא�.� z�N�Cو� �Nج�א��ص���+� �א ��T3�U pixels �3وع iH'b h���FD�����KF� �Image Processingن���� �P'ن�����Q'�����FDא��SetPixel b و ��N��P3�� GetPixelא��+$אم�دوאل�������gNP ��7א�izوא �����P،�و�H'V ��� �א n�D� Hو�F� � �����+$אم��pixels~%$א ���ن KQ$� �א KLא� ،� �7Q�1 �א lWg� unsafe code אل� 03� K3��� وא

pointersאل��n�D�Hو�F� �i�,��3 pixels Y�H'b�v�1 3�X�%�،�iH'V^ ��'د�����b�7 א��Q�1 �� Getpixel و setpixelאم�$+�����A�IC�i�3��g��%س�H$ �����4 H�Oق ، pointers،�و��$��lWSאICو ...�� �

... مرة أخرى لنشرح من البداية اآلن سنعود� �� �

oQ��א�ن����NP> pointer �KPTא��� �� :� �� �

#C كودpublic Node* Left;

� �oQ�������P3���K��،�a7!א�WS�@� structure אو class ع'N � unsafe �53א�� �KPTא�� :� �

� � #C كود

public unsafe struct Node { public int Value; public Node* Left; public Node* Right; }

� �

Page 246: خطوة بخطوة مع فيجوال بسيك دوت نت

246

�MQא�� �: Cو�دא �� �

#C كودpublic unsafe struct Node { public int Value; public Node* Left; public Node* Right; }

� � VB كود

unsafe static void SquareIntPointer(int* myIntPointer) { // Square the value just for a test. *myIntPointer *= *myIntPointer; }

��N3$+א���$.��N���\و�*U�q�\א�oQ��� �������Z�3H+$אمא ���Z�3H،��ذن���K��Nא & � �� �KPTא�� :� �� �

#C كودSquareIntPointer(&myInt2);

� �Cل���'b'� ��MQ q�\א Left אل�U Node م$+��N� -> ^3�� �� �KPTא�� :� �� �

#C كودn->Left=5;

� �

؟VB.netوماذا عن � �

�2343��N�� ' VB.net\�53א� iد�O��9א��NP>�5�!�� �JO ��א� �!'��5P �و ،� i�,��3�hא�,pMarshal�i���)��� �� ZONض�א P'د�א�،�hא�,p\א�_�D�53���Q�.C#:�� �

� � #C كود

unsafe {BitmapData bmpData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height),

Page 247: خطوة بخطوة مع فيجوال بسيك دوت نت

247

ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb); byte * pixel = (byte*)(void*)bmpData.Scan0;//the last syntax is equivalent to: //byte* pixel = (byte*)bmpData.Scan0.ToPointer(); pixel[0] = 255; pixel += 4; pixel[0] = 0; }�

� ��U��g7��1������VB�� �� �KPTא���:� �

� � VB كود

Dim width As Integer = bitmap.Width Dim height As Integer = bitmap.Height Dim bmpData As BitmapData = bitmap.LockBits(New Rectangle(0, 0, width, height) _ , System.Drawing.Imaging.ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb) Marshal.WriteByte(bmpData.Scan0, bmpData.Stride, 255) Marshal.WriteByte(bmpData.Scan0, bmpData.Stride + 4, 0) bitmap.UnlockBits(bmpData)

� ���Gא\^�ل�***��b�$�  ��و��PT �.�03א �� �

14. ExpressionsQuery � �

�א�و��وא�������Query Expressions _�D�U ����4אل i'1א���S LINQ �H�V�I��� �NS� �g��D�f���N�� ،h����53א�i$Q$%�i��F��$Q$, .net 2008 K%pN�� �F�! �K3��� �א C$��� �FN�� �VO'ل�א �7د��3�K�b�O� ��.��א

��O �����hא �. ���03.'אD$�א �

WS�A�Nא�א\^�ل�3^ :� �� �

#C كودfrom d in developers where d.Language =="C#" select d.Name;

� � VB كود

From d In developers

Page 248: خطوة بخطوة مع فيجوال بسيك دوت نت

248

Where d.Language ="C#" Select d.Name

� ���B�A'�)�'S�a�M 7���� WSא��������g������n�D�hد'���t �א��9� م�א�� �: �KPTא �

SQL Server كود

select name from developers where language=’C#’

إذن لماذا هذا الشكل الجديد ؟

���� �א U n�D� 2��N�� �و��'د h����� �א i$D�.� U� �SW�ON�� ��� � �א��9� م ��B� �����Hل ��7'م �N� KP,

DataReaderא��9� م���KB��R�b��3א�ن�אC�،�5PQ��Fg3و�C�q� . א 7��t'م���h�Q'�)�53�z�% �g��4א

n�D�KF�� LINQ $QH'��53�$�� ! אWS�zل�א����� :� �� �

#C كودusing System.Linq;

� � VB كود

Imports System.Linq

�$F��אل� LINQ 5D�iH��D��S�h����� Wא���n�D Array X�`Nאن�.��i$Dא�،��gN3�z�%�Cو�C �n�D�h���F� ����א ��Array ^3 אل�� ZONض�א �KPTא�، :� �

� � #C كود

string[] userNames = {"Ahmed", "Ali","Mohammed", "Ahmed","Ramy", "Khaled"};�� �

VB كودDim userNames As String() = {"Ahmed", "Ali", "Mohammed", "Ahmed", "Ramy", "Khaled"}�

� � مالحظة

���S�9א� �NS�c�]�� �5אذ��¤��^א�~ LINQ �3� H$. ل�����Sא Query Expressions אن�א�و���'Sق�H�O �א ،h����� �א $Dא'.� 03� K3��� ��� �b�I �1ق�� �א �دون a7!� ����P �א ��O��� �F���� �g!� ����^ �א �א�3 �gDא�'א� o��+}

$Dא'.�*j�V� h����� . א

Page 249: خطوة بخطوة مع فيجوال بسيك دوت نت

249

i$D�.ن�'P��$.��!'OV\א�lWS o�3ن�'P��$.�،�h����� XML z�,�Cن�'P��$.�،���B�z�Nول���RNא�ن���،��I�� �7א�izא�z��9א ��t��و א��� م "Ahmed"� �

#C كودIEnumerable<string> subset = from users in userNames where users == "Ahmed" orderby users select users;

� � VB كود

Dim subset As IEnumerable = From users In userNames Where users = "Ahmed"OrderBy users Select users

�MQن�א'P���2��N array KPT א�����������g�D�� Wא�<��NPא�ن���، � �� �: א �� �

#C كودforeach (string s in subset) Console.WriteLine("Item: {0}", s);

� � VB كود

For Each s As String In subset Console.WriteLine("Item: {0}", s) Next

0�1 ����NP> �53دوאل�� ��ض�א�z��9א�'ل�C# E ��53 א��+$אم�א�دא��R�Rb��� �� Wא�!�����Fא�،

fو�� :� �� �

#C كودIEnumerable<string> subset = from users in userNames where users.Length > 3 orderby users select users;

� � VB كود

Dim subset As IEnumerable = From users In userNames Where users.Length > 3 OrderBy users Select users

C' ��b'VI�،��S�( ������hא ����אن�א P��9�$.��MQ �2��N'ن�.�دHא�3�n�D��!���'ع�א�K7�����N�������5Dא�^���53i$j�!��N ��g(���NS�،��J!ن�'PQאل �$��9אن� var و�אلC Dim ون$� Data Type �9��}H��MQ7��،�א�����S�N��,�t א

��Bאل ��'د��i$j�!��NS�0%Z�Nא��W ��`��Nא��9� م�� Nullable Types U��MQא��S�N��,�t � دHس����� وא �

Page 250: خطوة بخطوة مع فيجوال بسيك دوت نت

250

�lWS�����Pא������KF+$אم�A�IC��7Q�� Lambada �3د�.�����3�U��g��D�f���Nو��، .� �

15. Preprocessor Directives � ��hدوא �n�� �4א�23אو� ��0QH�TFא��C�i�Sو���ROVل�� Iא�^ ^3�� �� : �n�D��^����3��������Uא �KPTא

�7Q����gא��f�����F�D�$��n�D��Nو� ��5Fs�53א�9'אد���D'F��0s' ��g. وא���gR�!���Q���r��N��3ود�$

�FMن�D$م�� 'g�� אل�lWSن�Cس�H$ ����������z�N�Cא P'د�،���9אن�WS�U�:!������3א�א�¼Q'T� Regions א

�. א $Hس א WS�U� �VO���g��D�f���N��tא Preprocessor Directives و�53��D'F���S��g! Iאل �

.151. endregion, #region#

D+$م���د�'P �N������g(3א�iد� o�3�U cs ^3�� �� �KPTא����g������5P>�،� : א��ص�������Fذ��������7�

� � #C كود

#region "Class Employee" public class Employee { private string _name; private string _age; private string _salary; public string name { get { return _name; } set { _name = value; } } public string age { get { return _age; } set { _age = value; }

Page 251: خطوة بخطوة مع فيجوال بسيك دوت نت

251

} public string name { get { return _salary; } set { _salary = value; } } } #endregion

� � VB كود

#Region "Class Employee" Public Class Employee Private _name As String Private _age As String Private _salary As String Public Property name() As String Get Return _name End Get Set _name = value End Set End Property Public Property age() As String Get Return _age End Get Set _age = value End Set End Property Public Property name() As String Get Return _salary End Get Set _salary = value End Set End Property End Class #End Region

Page 252: خطوة بخطوة مع فيجوال بسيك دوت نت

252

،�f�1 ��3^ א�ن�<��gR�!��NPوא� .�53��gא�� ���� �KPTאF(N3�¤ن��'د'PQ���r :

� �� �� �

.241. endif, #else, #elif, #if#

����N��3�h9،�و� ��g��D���1Q Conditional Code Compilationא���Uد�'P ��+$م� ��W�ONא%�א�53��N��3�zא ^F!�،�a7! �9و.��אل��a7!�KF�Q�9د�'P ��G�Pא P'د Release و �@��Uو.��אل �53�z�%�K�� Debugא

� �� �KPTא�� � �� �

#C كود#if DEBUG Console.WriteLine("App directory: {0}", Environment.CurrentDirectory); Console.WriteLine("Box: {0}", Environment.MachineName); Console.WriteLine("OS: {0}",

Page 253: خطوة بخطوة مع فيجوال بسيك دوت نت

253

Environment.OSVersion); Console.WriteLine(".NET Version: {0}", Environment.Version); #endif�

� � VB كود

#If DEBUG Then Console.WriteLine("App directory: {0}", Environment.CurrentDirectory) Console.WriteLine("Box: {0}", Environment.MachineName) Console.WriteLine("OS: {0}", Environment.OSVersion) Console.WriteLine(".NET Version: {0}", Environment.Version) #End If

� � �. elif و ON� else@�א �5P>��7Q�1א��+$אم

� �

15.3. undef, #define# �oQ��� symbol ^3�،�Y�3 oQ�����NP> symbol K ��+$م� Debug oQ�����NP>אو��، symbol ص��I

�א��+$א3: ��� � ��3^ ص� ���oQ ����[�א���� �א\^�ل�א ،� �7�9 Symbol KFD� ��Q� �א P'د �c�Qאن�WSא

Debug�: n�D�a7! Mono .� �

� �

� �� 9����������NP>��7'د��� �KPTא :� �

� � #C كود

Page 254: خطوة بخطوة مع فيجوال بسيك دوت نت

254

#define DEBUG #define MONO_BUILD using System; namespace PreprocessorDirectives { class Program { static void Main(string[] args) { #if MONO_BUILD Console.WriteLine("Compiling under Mono!"); #else Console.WriteLine("Compiling under Microsoft .NET"); #endif } } }

� � VB كود

#Define DEBUG #Define MONO_BUILD Imports System Namespace PreprocessorDirectives Class Program Private Shared Sub Main(ByVal args As String()) #If MONO_BUILD Then Console.WriteLine("Compiling under Mono!") #Else Console.WriteLine("Compiling under Microsoft .NET") Dim INDEXERS As n, OPERATORS As n, [AND] As n POINTERS 413 #End If End Sub End Class End Namespace

Page 255: خطوة بخطوة مع فيجوال بسيك دوت نت

255

16. XML Commenting � ��UKFDא.�0!¦ن�'  �'אد��3C�$�Qא���Q���Uא�Comments U��b'VI���FS א �����،�i�P ��א\�0QH�Tא��

53�K��7�� �I��*+,��0�1א��Q� �F�� ��'د¤ ����3א. 0�1��� �$��� ' ���nو� :��Dل��F�9وא� ��'د¤ �!��3� $gא�iZOد��'P �. �'���Q%$א �'.�5D��Oא �O��U�KF@�א �

$��U��N!�D��Fאلو��KFD���Q�،وس�H$ Comment KPT א�lWS�h�Qא�� � �� � א �

� � #C كود

// here we will do something, set x=startvalue x = FirstClass.Default();

� � VB كود

' here we will do something, set x=startvalue x = FirstClass.Default()

53� �NNPe� ،� i$Q$%� �7Q���n�D�f���N�� �אل א�ن ����� Comments X'��]� �XML���Q�3א� i$D� �N � �!'Q� �}�. �I��g��D�f���N ل�א $Hس �

� � مالحظة

. javadoc خ·ل من Java من اوائل اللغات التي طبقت ھذه الطريقة كانت

�0sل�و I�53��Qא$��� ���$�و�lWS�0sא � ���Q�///�3ذ ، �W �P'د�وא�����b�I�h�3 D�C�0s�0�1و���

9�03�C�n�D��7ن����K3��� 3��د¨ XML �3 ��א���1Qدאم� XML �KMOQ�t ،��53��D'F��¤�NSא ���b�Nא ������7א$��'� ��g3א��+$א ��S�O\א .� �

� ��VN� �א �א��9+$אم� �<c>� ���C�$��9ن�Q��ض� �Q$R$�אن�א o����ax� �

<code>� ��3�K3��� ��P'د : �Q$R$�אن���$د�א�������1�9א �<example>� �Q$�X'�P\د�א'P �$�3^�ل� �v�Tא �

<exception>� ��WS�5D�2�Nא�� �א �5P>�tאن z�1Iوא��hאz�N^��9א�n�D�'�d�W א\��oא�א �JO א P'د�Cو �

Page 256: خطوة بخطوة مع فيجوال بسيك دوت نت

256

<list>� �Documentation אدHאج�.���Fj%$אول�دא�KIאل� �<param>� �Y�3�Z�3H���v�T � �

<permission>� �z����Q�FLא�Kjو���obو Y�3� �<remarks>� ��hאH��Iאل Build� �<returns>� �� �;return و�2����obא $א �

<see>� �H Documentationא��53��I��z����I��aאل� �<seealso>� ��5P �)א�)��א�K^3)�MQא �����،�و �

<summary>� �z�`� �� �Bא�obو vو�T\א� �<value>� ��N��3���b�I�ob' � �

� �

الطريقة واآلن ، ما هي الفائدة التي ستجنيها إذا استخدمت هذه ال من الطريقة التقليدية ؟؟؟بد

��Q��3������� ^3�X�%�،�9وC ^3�YO&'\א��JO :� �

� � #C كود

/// <summary> /// Employee Class of the company /// </summary> partial class Employee { /// <summary> /// /// </summary> /// <param name="Firstname">first name of the employee</param> /// <param name="Lastname">last name of the employee</param> /// <param name="age">age of the employee</param> public Employee(string Firstname, string Lastname, int age) { } }

� � VB كود

''' <summary> ''' Employee Class of the company ''' </summary> Partial Class Employee

Page 257: خطوة بخطوة مع فيجوال بسيك دوت نت

257

''' <summary> ''' ''' </summary> ''' <param name="Firstname">first name of the employee</param> ''' <param name="Lastname">last name of the employee</param> ''' <param name="age">age of the employee</param> Public Sub New(ByVal Firstname As String, ByVal Lastname As String, ByVal age As Integer) End Sub End Class

�� �� : و%��Xא�ن��KFDא P'د�،�9��ªא �iH'Vא

KS ؟�� W��@� ��.����7Q�!���43،�א ��Rsوא��g(Qد�'P ���אbق�،�אH�O 9�)��א

� �

Documentation : نقطة أخرى

hאH��I�5Fs�53و� �MQאل א Build אج�Iא��NP>� ، Documentation ��Dو�T\� ��3���lWS�n�D� א�F�Dدא � XML و.�����H���Iא���ج�j�VI�53 Build o�3*�א\�Tوع�.����H���I א '�'م�،� Wא�� �KPTא�� :

Page 258: خطوة بخطوة مع فيجوال بسيك دوت نت

258

X�% S�K^3��J�,�$`���،�lH���I����F.�W �: Wאא 'b'ل�Wkא�א\��oא �

:مرة أخرى Documentation نقطة ثالثة

�!'Q� 9�o� Visual Studio 2008 אل� KQ'R� � ��sאZ!א� iאدא XML �5P>�5P � ،� �3'gO3� �q�V � ���� אK^3�iدאCא��+$אم� NDoc �KQ'R� ������� : �lWS�K^3א iH'V א\��oא

Page 259: خطوة بخطوة مع فيجوال بسيك دوت نت

259

��... �53�a7! Commentsאل �WS�Kא �� �

����NP>Sourceforgeא '�����Kb��n�D��+אل��� �:��53א �א��aא �� �

رابط

http://ndoc.sourceforge.net/

17. assembliesnet .

��03אل iZO �א lWS� ��$D'3 .net assemblies א^�� �g�!�K�1��5 � ، ��F�!� �g�!� ���f��Nא �7Nط�א�����9 �NNP و� ��NP> msdnא�9 ع��n�Dא\�I�53��gND�$Q ل �

� namespace ـل ا.17.1 �

Wא�دو3��وQH�T3�U���א�$�0�F��5P> �i$Qא\namespace h��'P لO��U@�א�،���� ��:�אن�����gM���AאK�%א namespace $�'3 �������h��'P3�0�F� � �

� � #C كود

namespace example {

Page 260: خطوة بخطوة مع فيجوال بسيك دوت نت

260

class someclass { void method(){ } } }

� � VB كود

Namespace example Class someclass Private Sub method() End Sub End Class End Namespace

� ���NQ$ ��3 '���ن�C�J! classCar U namespace �7��� ���5Fsא $א ��א�� ��������������NP>�5�!�،��Iא P'د�א

method:�� � #C كود

void method() { classCar x=new classCar(); }

� � VB كود

Private Sub method() Dim x As New classCar() End Sub

� �KFD��NNP>�5P import K example 53�5PF�� ��oQ����JOא�� �KPTא��� � �

#C كودusing example; namespace example { class someclass { void method(){ } classCar x=new classCar(); } }

Page 261: خطوة بخطوة مع فيجوال بسيك دوت نت

261

� � VB كود

Imports example Namespace example Class someclass Private Sub method() End Sub Private x As New classCar() End Class End Namespace

Default Namespace تغيير ال .271.

���ل�א�z��9א9!�q� �sאZ :� �

NET Assembly.Format of aشكل ملف االسمبلي .17.3� �

X������NP>� ^3אن�� �C�ªن��o�P3א�9����P�Q'ن��53א �dumpbin.exe ��b�N �ذא�.�o�3���O���Fא�9�� �� �: א �

Win32 file header

'S�KS�،�o�\א�אWS��5'ع�D�h�3'��3�$`����NS console אم GUI אم dll �53�K�qT� و����n�D�lW�ON����O)��א�. وNQ$وز �

CLR file header

Page 262: خطوة بخطوة مع فيجوال بسيك دوت نت

262

�� $�� 9� t �א h�3'��\א� n�D� '�d .net application ،� �gFD$Q� �אل אن ������ �7Q��� n�D� '�d

managed fileوو%'د�אل� resources :! I3:�و$D�53 .� �

Y�17N� ��7��� א�א\��'�h�3א^���Fg��9 ��،�Y�7��� 3�����Qא'��z�N� ��A'���g�3�K3�����5ذא���N���3���ج�����. �I KFD��J�� .netص������ �

CIL code

P'ن���gNDدHس�3����K7ن�7�����gND��،��� א �t�JIT �N�$ א P'د�א��ص��H'!�:�B�����Q�،�����4א�����+$אم

� ,��zא� �

Type metadata� �

�. א��H%���א ��t�� �������U��g3$+��'��K�b�O��n�Dא�9'אع �

An assembly manifest

�. אb$א�Hא�9����وI !: א �א��h�O�3�Y��aא�9����א\+����O،��$د �

Optional embedded resources� �

�'�d�5אن�P>���������H'bوא�h��'7Qو�n�D :! Iא�D$د�53א��o�3א�Tس��H'�Q� . �h�O�3א

17.4. Private Assemblies ���Rאل �o�3א�����I�53�KF�Q ل�3���Hא �23��4אو Private Assemblies אلQ�5 �����،����1� visual א

studio�C�U� �אو Z�®� ��Uא zא'��o�\א� �WSא 5D ��3�U��R���� a7!� ،� �I�� ��P3:NDن 23��4 �א H .

� ���U KFD�$������1� �<�K7���NPא �MQא� ،�:�3�h�O�\א�lWS�fW����Q��������fW� setup : �i�,��3�. �'�:�C�03�K3���Q�9���z�,*�א N)�م �

h�O�3 אو�אل���sאZ!9א�����. א 7��t'م���WS�53��S��g�Fא�א N'ع dll א�9 �

Page 263: خطوة بخطوة مع فيجوال بسيك دوت نت

263

17.5. Shared Assemblies

N WS5א�S'�א��NS�،����^ WSא�،����Kن��¦�P3ن�א\��oא ����03�K3א�^�� P� dll'ن�و�Q�53�¤$��+$م��o�3אل 'ع�א���1�� 53 ^3� ،� ��O@�א��gز n�D System.Windows.Forms.dl �����o�3�Uא�9 �S${� �3� iد�D� ،

�������fW��03��g!W����Q�9وز�و$NQ' �. א\'%'د��Uא �

C����g�3�K3�������17و%'دول���iHو�s�'Sع�'N ��unique �9�n א�� �o�3�z�Tא�����WS�53א�א�o�\א�אWk

�אل ��QCم ،� A�Iא�� h�O�\א� �.��� 03� XH�M�Q COM�¤�NS� ����� ��ن f��Q� �3 COM globally unique

identifier (GUID)��O����zא���z�1Dא���Q����� ، KP COM �f��Q� �3� lz�1Dא����D���bא�ن�א� ،�$Q$%���� strong name :�'و��$�Q�9�W ����U�l$Q$ 128 وא�� �: ����53אH9.�م��ZT¤�א\�h��'Pא �

• ����. א����o�3א�9 �

• ����. ��+���o�3א�9 �

• - public key valueU�iא\'%'د AssemblyKeyFile � �

• U���F��.א�hאد$Dא�و%'د�א�� ���U AssemblyCulture .�� �

• digital signature �����:NQ'P����Qאم$+� hash h�Q'�)�Y� وאل�����. �o�3 public keyא�9 �

KF� public key 23��4 ��SDK’s sn.exe ^3 ���+$م�א�� �KPTא�� :� �

� � كود

sn -k MyTestKeyPair.snk

� �

Page 264: خطوة بخطوة مع فيجوال بسيك دوت نت

264

Multithreadingالمسارات المتعددة .18� �� �

مقدمة .18.1� �

�g�]���^Q$Lא�K�qT� �c�Qא�W�ON������P3א�^��O��U��Fg3�53@� و��f��� multitasking systems �3�'S)��אi$D�K�qT�����P3ن���C�${א�W �،��.' �. ��אO��U�23@�א '.� א �

���U�ª���א 4א�23אن�א �23��4א 'א�$�.�د�W�ON��n�D�Hא�^��WS�53 53א�א N'ع net. ��א23 ���NP �،���sאZ!א

��]���Fkن�'PQن�Cدون���.' �. H���3 multithreadingض�،�WSא�O��U����FD�����f��Q��3@�א �

���Q��`N��\א�}$�אن������23אW 3א�وא ��03�E$Rא�^���53,+*� �P ��א��Hل��h�O�3وא��Q$Lوא��+$אم�א'Sو�،��.' '�_��lWS�KVOQ�5PQא\�gم�دא�KIא �23��4א 'א�$�ON� 5D@�א�:��Dא�Hد�.��`N��\�5אPQ�_��3 ��gM��

FM3�'Sא�WS�،� �Lא��N�Hن�د' .�� �� �

مالحظة، لذا قم System.Threading التي سنتعامل معھا ھنا تقع تحت نطاق ا¡سماء جميع ا¡وامر

أو~ باستيراده

�: �S א ���b�Nא������9دא���KIل�אWS�z��9א �� �

�VN� �א �ob' �א �Thread� �oQ��� Thread :�3�K3��� � %$Q$�وא �

ThreadPool� ��<��k�5Pא ����53��D'F� Threads gN����F�!�K3אل� �ThreadState� �Enum���h9���i$D�n�D�'�d Thread� �

� �ThreadStart� �z$� U�W�ON� � Thread א �

ThreadPriority� � Thread�Q$$�אو 'WS��Qא�אل� � � �

Page 265: خطوة بخطوة مع فيجوال بسيك دوت نت

265

����!�s9�� :� �� �

1. Semaphore 2. Mutex 3. Monitor

� ���D�f���N��t ��و�53��D'F���Sא�'�h�3�QHא ��א�53א�� ��U��gא���zא �

� �

synchronizationالجوريزمات التزامن .18.2

U��Sא53 و�� Q�9���r Thread�Synchronization 53��^����F א��9س�א�'��h�3�QH��+$م� ��h���Fא

lWS�n�D�f��� 'b'ل�����O@�א\�VدO��U�H@�א '.��،�\��53�$Qא�� �NS�53�z$� �: א�5P>�h�3�QH'�9א �� �

ابطر

http://en.wikipedia.org/wiki/Semaphore_(programming) http://en.wikipedia.org/wiki/Mutual_exclusion http://en.wikipedia.org/wiki/Monitor_(synchronization)

� � �

� �� �

18.3. Thread.Threading.System

�JO �،��lWS�h��'P3א �g��D��JO و���N3�g3�W�ONא\+��threads �O א���U������9ل�אWS�z��9א�،������ ��Nא�z�T א�S������9א :

�א\P'ن �ob' �א �Sleep()� �53�iZOא '.� �KFD�o.'� threadאل�� �IsAlive� �زאل��KF�Qאم����s'���F�. thread �3 9ذא���ن�אل� �

IsBackground� �thread U�KF�Q background �ذא���ن�אل� �

Page 266: خطوة بخطوة مع فيجوال بسيك دوت نت

266

Priority� ��� �Lא��Q' �א�و �ThreadState� ��אل���� Thread� �

Name� �thread א���אل� �Abort()� ��Iوج� �

Join()� �$و�KFD�o.'� thread Eאل��n�� U�E$Lא join� �Resume()� �:!�7Qא�$���KF� �א���f�NJא �

Start()� �KF� ��i�Fא�و� �$�zא� �Suspend()� ��f�7Qא �p3�KF.��א� �

� �Y�Fg3�W�ON����Qאن��nN�3�n�D9ل�$�� ���Q������{�KF����Q7'م��$אN� א�@O��U�f�NJ��9��S$�د��'���،��.'

�. ,��vא\���S�Oא��s'\����b'ع �

� �� �: .����`����א P'د�א �� �

#C كودstatic void Main(string[] args) { order1(); order2(); Console.ReadKey(); } static void order1() { for (int i = 0; i < 100; i++) { Console.ForegroundColor = ConsoleColor.Green; Console.Write(i.ToString() + " "); } } static void order2() { for (int i = 100; i > 0; i--) { Console.ForegroundColor = ConsoleColor.Red; Console.Write(i.ToString() + " "); } }

Page 267: خطوة بخطوة مع فيجوال بسيك دوت نت

267

� � VB كود

Private Shared Sub Main(ByVal args As String()) order1() order2() Console.ReadKey() End Sub Private Shared Sub order1() For i As Integer = 0 To 99 Console.ForegroundColor = ConsoleColor.Green Console.Write(i.ToString() + " ") Next End Sub Private Shared Sub order2() For i As Integer = 100 To 1 Step -1 Console.ForegroundColor = ConsoleColor.Red Console.Write(i.ToString() + " ") Next End Sub

��sوא�'S��Fد��'P ����Dא �D�V$�و7Q ���53'مא��'S�����1 1����Dא�H.�م��Q$D�V��و��Nز ���،�א �2��Nא� �،�� א ��Nز�Q�O�� ��"��������^ ���2j�����Dא $א ��א�و�������MIوא����Q�Y��U ^3�� �� ���2 �KPTאj��N �P'ن�,�,��א :

� �א $א W�ON�� ��Q� ،�����1 �א �����oQ وWSא �א�ن��7N'م �3C� ،� z�g��9א�n��� ����^ �א �و���53 z�g��9א�n�� א�و��

threads�n�D��SW�ON������������gN3�$� ���K��W�ON����Q���r�W�ONدא ���n�Dوא��O��� �@O��U�H'�4و�� א ��3^ א '.��،�א P'د��� �: א �

� � #C كود

static void Main(string[] args) { System.Threading.Thread t1 = new System.Threading.Thread(order1);

Page 268: خطوة بخطوة مع فيجوال بسيك دوت نت

268

t1.Start(); System.Threading.Thread t2 = new System.Threading.Thread(order2); t2.Start(); Console.ReadKey(); } static void order1() { for (int i = 0; i < 100; i++) { Console.ForegroundColor = ConsoleColor.Green; Console.Write(i.ToString() + " "); } } static void order2() { for (int i = 100; i > 0; i--) { Console.ForegroundColor = ConsoleColor.Red; Console.Write(i.ToString() + " "); } }

� � VB كود

Private Shared Sub Main(ByVal args As String()) Dim t1 As New System.Threading.Thread(AddressOf order1) t1.Start() Dim t2 As New System.Threading.Thread(AddressOf order2) t2.Start() Console.ReadKey() End Sub Private Shared Sub order1() For i As Integer = 0 To 99 Console.ForegroundColor = ConsoleColor.Green Console.Write(i.ToString() + " ") Next End Sub Private Shared Sub order2() For i As Integer = 100 To 1 Step -1 Console.ForegroundColor = ConsoleColor.Red Console.Write(i.ToString() + " ") Next End Sub

� �

Page 269: خطوة بخطوة مع فيجوال بسيك دوت نت

269

2j��N �����א��A�N . א�ن�

i�3�K���S��Fن��'P��5 �2j��N 1��0א �אل ���q��X�%�، Priority ن�C�$`���،�2j��N 3^ � 'א���gN3�$و%��Xא�Q' ��Gא�و�b :N3�z�g��9א���Q�n�D3^ א��� �� ��Kא ^����،�א P'د�א.� :� �

#C كودt1.Priority = System.Threading.ThreadPriority.Highest;

� � VB كود

t1.Priority = System.Threading.ThreadPriority.Highest

� �� ���2 �KPTאj��N ���אV�� :

،�W�ON� �5Pא C�'S�$S�Tن�א P'دWS�U��Q'���SW�ON����5Qא�א '.� ��`$�א�U�h�! �Iא .� �

Page 270: خطوة بخطوة مع فيجوال بسيك دوت نت

270

Priority ولويةاأل .18.4

����Qאد�Iل�אل Priority �$د�אل �3$ND�W�ON� ����אن�אل C threadsو '��Qא�،�H'�4و�� ذو� �n�D threadא�n�Dא���Q' ��GQ�7א\gO'م��ZOض�אن� $�NQא9و�،�W�ON��hد��3א$���n(d :� �

1. ��Fg31A'V.��Q' �. �אو �

2. ��Fg32A'V.��Q' �. �אو �

lWS�U ��Fg\ل�א�Iאد���Q�� �L1א����،�H'�4و��� �. �وWPSא�2����،�1 �

��Fg3ل��'ن����U��3C2 � �� �: ذא�hאو '��Qא.PQ�،�K'ن�א�����3 �KPTא �

��Fg\1א��Fg\א\�1،�א�،���Fg1��Fg\�2،�א��Fg\�1،�א،� ��Fg\1א��Fg\�1،�א��Fg\�2،�א�...��z�g��9א�n��وWPSא�

�FS$��. �53א �

v�,ن��P3א�WS�@� i$D�${�����،��NS�53�z$� '�HCد�hא ��Qد��NP>�iא�����،�H'�4و�� א�'אع� א�'�h�3�QHא

�: scheduling �53אل �

� � رابط

http://en.wikipedia.org/wiki/Scheduling_%28computing%29

$Q$R� �،�A�IC�i�3د�'�� Priority م�אل$+�����NQ$ ��Fg3�C enum � �� �: א �

#C كودpublic enum ThreadPriority { AboveNormal, BelowNormal, Highest, Idle, Lowest, Normal, // Default value. TimeCritical

Page 271: خطوة بخطوة مع فيجوال بسيك دوت نت

271

}

� � VB كود

Public Enum ThreadPriority AboveNormal BelowNormal Highest Idle Lowest Normal ' Default value. TimeCritical End Enum

^3�� �� ���א P'د��� �KPTאVQو :� �� �� �

#C كودt1.Priority = System.Threading.ThreadPriority.Highest;

� � VB كود

t1.Priority = System.Threading.ThreadPriority.Highest

5D�$�� ��N��nאن�������P3א��+$אم .��Kא 9� ،� �، sleep א\'א�0�sא�����9 i$\�W�ON� �f�7Q9 suspendא

��.p3�f�7Q9�...N �Wk��Nא�א $Hسא���53א�,��g����C$��t �. �7ط�א �� �

18.5. ParameterizedThreadStart

H����Nא������ 9�)���Uא\^�ل�א���� KF�و7�����53'م���� �start U��SW�ON א $א��k thread �5P �،�KVON3�����' 7�Z�3H���Kא�h؟ �3ذא������ ��lWSא $א �

،�a����KLאم א$+���� ParameterizedThreadStart ^3�� �� �KPTא�� :� �

#C كودThread t = new Thread(new ParameterizedThreadStart(functionname)); t.Start(parms);

� �

Page 272: خطوة بخطوة مع فيجوال بسيك دوت نت

272

VB كودDim t As New Thread(New ParameterizedThreadStar(functionname)) t.Start(parms)

مالحظة ولكن يمكن استخدام ThreadStart· يمكن استخدام لو كنت تود استخدام دالة تعود بقيمة ف

BeginInvoke () وقراءة الناتج فيEndInvoke()

18.6. foreground and background

D'��¤�NSن��53אل� threads :�� �

Foreground Thread: �9�23��4 �����Q�nאWS �0�B�W�ON��53�z�g��9א��c�Qאن�א���qQ�5אن�P>�א N'ع thread א N'ع�אZ!9א���s א\'%'دforeground threads�،�:�!�i אل . �7'م����WS�53�'S�lz�Tא

Background Thread: �' �n�� _����W�ON����Q!��אل WSא��c�Qאن�א �5P>�23��4אن����Qא� .:�

background threads� ^3�� �� �KPTא���:�FD���Q�، :� �� �

#C كودt.IsBackground = true;

� � VB كود

t.IsBackground = true

18.7.Threads Synchronization � �

����03�KFאل� �3$NDThreads��3א���א®�د�W �،��O��+\א���FD�hאH��3�Y��KIא$��KVd�9C�5FMQ�$�C� !��~��f��QSyncLockس������Hد�Uא��V����g� 3��د¨�א ��א�53א �tא,��������1Q�W �.�وא �

�������QSyncLock…End SyncLockא��+$אم��،�KIא$��C�KVd�9�����g�Iد�دא'P �وא �YFM����Q�tא�KPT ��� ،�z�g��9�$�א�����KIא$� ���zل�א������@O��Uد�'�����F���9و�H��\א� �7'م���� ق��V3دWS�Hא

� ^3�� �� �:א �� �

Page 273: خطوة بخطوة مع فيجوال بسيك دوت نت

273

#C كودlock (myLock) { for (i = 0; i <= 1000; i++) { Console.WriteLine(i.ToString()); } Console.Write(number); }

� � VB كود

SyncLock myLock For i=0 To 1000 Console.WriteLine(i.ToString()) Next i Console.Write(number) End SyncLock

�q�\م�א$+��Q�H��3����F�Q�5 ����myLock��.א�W �،��MQC��D��1 ����7א ��Pא�Hو��3Cא�z�g��9�$�א����KF�Qאن���q�\א��F�7 �KIא$��:�!�KVdن�C�nT§ن��P3�K��U��g�s'�number� ^3�.� �

� ��� �� ���qא ������–<3��NP��!��א\��5D�$Qא ��א�U�53א\��Hא�53�hא $Hس�א���−�:� �

� � رابط

http://vb4arab.com/vb/showthread.php?t=6341

� �

18.8. oolPThread

�hאH��\א� ir–� ��� �א �bن���–�U�¼Q'T��53� :��G����� �א\��Hא��������U�hو�3 i�^P � KQ$� ���Sא�א�� 53� ^P �وא 23��4 �א 5Q'P���� �ذ ��Q� ،� :! Iو� Hد�V\وא� �א ��א53 �C�Gوא�3��� a�hאH��\א� 53� �D'F�

�23��4 ��א\��Hא�hא �U�i�^P���SW�ON����Q�9�tא���U�iא!�د��^�C�� �:א\���ZT،�وPQ'ن�ذ �� �

#C كودfor (int i = 1; i <= 5; i++) { ThreadPool.QueueUserWorkItem(sometask.Execute); }

� �

Page 274: خطوة بخطوة مع فيجوال بسيك دوت نت

274

VB كودFor i As Integer = 1 To 5 ThreadPool.QueueUserWorkItem(AddressOf sometask.Execute) Next

�� �� ���qא ������–<3��NP��!��א\�WS�5D�$Qא�א\'s'ع�I�53 ل�א $Hس�א���−:�� � رابط

http://vb4arab.com/vb/showthread.php?t=6340

18.9. BackgroundWorker

��WI]���N��3��Fg3�W�ONو.����'BackgroundWorker Q ���+$م�אل �53�،�23��4� ���$א��5Dא\���Hא�����9

53� iz�7א ��� �bא��� �ذ ��א $وאل ��^3C�web service�� G�%� �אو H'V �א ����3� h���FD� �C�53و h����� ����אW�ONو��C��I����'���. ��r����FD،�אو�א%�א�53��D'F��zא ����Q'��h���Fא�3'� $3 �

U� �SW�ON�� �Q��� 5D� �א $وאل lWS� KFD� ���P3¦�� ���ن ��C� �Cن �$��7 thread و03 9�� ،

BackgroundWorker�$Q�3���1��H��Iא��NP>�������� ،� �PR� $א � thread ~�א ��53א��� ���t ��U�Gא�Q��� 5D� �g��qT�� ��� �و53 �SW�ON� RunWorkerAsync()�z�gא��� $��� אIC� ، E$�� W�ON�� ��Q� W�ON� א

RunWorkerCompleted�$���2j��N �. א���lWS�W�ON��z�gא\�Fg وא �D� ^3�:�!��NP>�tض�א �

KF����.�KF� ���z$�� Windows Form �� � �א�3 H�0زs����53و�hא9دوא�����������.� ،،��Fg\א�W�ON���z$

iدאC�GR����.א�Iوא BackgroundWorker ^3�� �� �KPTא�� :

Page 275: خطوة بخطوة مع فيجوال بسيك دوت نت

275

�NS� �FS�Y� �RunWorkerCompleted وאE$L وא W����Qא��$�lz�Dو.���$�zא ���SC DoWork ،�W�ONدא� �� �KPTא���W�ON� �: 3^ وא W����Qא� .:���$�א�53�z�g��9א �

� � #C كود

private void ProcessNumbersBackgroundWorker_DoWork(object sender, DoWorkEventArgs e) { } private void ProcessNumbersBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { }

� � VB كود

Private Sub ProcessNumbersBackgroundWorker_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs) End Sub Private Sub ProcessNumbersBackgroundWorker_RunWorkerCompleted(ByVal sender As Object, ByVal e As RunWorkerCompletedEventArgs) End Sub

� �� �� �KPTא���W�ON� ���z$� 9����Q��7א :� �

� � #C كود

ProcessNumbersBackgroundWorker.RunWorkerAsync(args);

� � VB كود

ProcessNumbersBackgroundWorker.RunWorkerAsync(args)

E$Lא�Uد�א\'%'د�'P �����W�ON����Qא DoWork .� �� �� �� �� �� �� �� �

Page 276: خطوة بخطوة مع فيجوال بسيك دوت نت

276

� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �

� �� �

Page 277: خطوة بخطوة مع فيجوال بسيك دوت نت

277

� �� �� �� �� �� �� �� �� �� �� �

net.االدخال واالخراج في � �� �� �� �� �� �� �� �� �� �� �� �

الباب

13

Page 278: خطوة بخطوة مع فيجوال بسيك دوت نت

278

� �� �� �

Page 279: خطوة بخطوة مع فيجوال بسيك دوت نت

279

IO . Systemالفئات االساسية في .1 � �

BinaryReader� �BinaryWriter� �

� ����� KP,�n�Dو���������������izא�. Binary

Files� �BufferedStream� ��.p3� �����h ��ن� Buffer t �Cن�א 5P>�

iא��W 9�7�����א��g7Q���WI]�� �Directory� �

DirectoryInfo� � ����03�K3א¡�$א�hوא\��'�h�3א\�����7���*��

�g�� �DriveInfo� ��hא$��و 5D� h�3'��\א� �و3��!� K3��� ��� *��

�Driver א �+��g%�U�5Qز¤ �File� �

FileInfo� ��g������Q��3�Kو��h�O�\�03א�K3��� ���*��� �

FileStream� �53��NP> �n�D�h����� א 'b'ل� ��h�O�Fو�Dض�אKP, Stream� �

FileSystemWatcher� �o�3��� ��$�h Qא �C�1��t �3א.���¤H��Iאو���$�وא:��D� �

Path� �hאq�\א� 03� K3��� ��� *�� �KQ'R� � ��VN אK�qT� ��3 N)�م�א'gO3�H'b����hאH��\א� �

StreamReader� �StreamWriter� �

����V��iH'V��h�Oא �7א�izوא ��������Pא\ �

StringReader� �StringWriter� �

�!�03�a7א�f �Iאن�אل ،����� O� Reader@�א

�String אل ���Qא�Writer 53�lz�T وאل �

�. א�z��9،�و ��S�g,C��S�lWS�5Pو��S�^�Cא��+$א�h�J!�¤�NS �3אWS�U�A�Iא�א¡�ل�53 �� �

ory Directو DirectoryInfo الفوارق بين .2

��Uאل א H�Oق 'Sא������ structure אن����� ،� �gא��ص�� Directory 53� i�,��3� �7�T3 Object �3א

DirectoryInfo�53��7�T3��g! FileStreamInfo�53אل�� �SH���7$و�T\א Objects �3א� ، �K3��� א H�Oق��Uא

Page 280: خطوة بخطوة مع فيجوال بسيك دوت نت

280

�JO �א �אن 'g! Directory ع'N �א 53� �kدوא� f��� Static 5P>� ��r 03א��� �א�3 ،� i�,��3� �g3א$+

DirectoryInfo��+���oQ�����39א�G�1�Q�����o�����39�! وאل$ ��Kא��+$אم�א. .� �

@O� Yق���O ������n�Dא� �����1NQ��39א File و FileInfo ...� �

Y�JO �j�V*� א FileStreamInfo��!�s���g�3�KFא�j�V*�א������9ل FileInfo و DirectoryInfo � �א� �: ���03�K3א\��h�Oوא¡�$א�h،�و�Sא �� �

��bא��� �ob' �א �Attributes� ���!�sא� ��.� �Q�F��� *�§ �5D� o�\א� �Cو $�`F�

�אل �Q�� enumeration nF�\א

FileAttributes� �CreationTime� �z�T�9א�¢QHو���������izא�.� �

Exists� ��KS��!��3א\�3�o'%'د�Cم��9 �Extension� �o�\א$�3אد�א�$���� �FullName� � 3���H��\א�n�Dل�'VLא $�`F� �C�o�Fو�� �

LastAccessTime� ��n�Dא\��oאو� �$I'ل� ¢QH��� �I�� �و����� izא�.

�א¡�$ �LastWriteTime� �א\��oאو� �WS�U�����Pא�¢QH����Iو��������izא�.

�א¡�$ �Name� �3��!��א���א\�C�oو�א¡�$� �

� �

DirectoryInfo الفئة .3

��Szא'��9��!�s53��7א��� �� �n�D FileStreamInfoא�j�V*�א�� : ،���'��lWSא �n�D��JOא $وאل�א

� ���bو�א��C�� �א $א �ob' �א �

Create()� �CreateSubdirectory()� �

���$�!��U��Dא\���Hא]$د א����z�T$�אو �

Delete()� �:��Q'�)�K3א¡�$�و���fW�� �

Page 281: خطوة بخطوة مع فيجوال بسيك دوت نت

281

GetDirectories()� �s'��z��9�53א��!'OV3�$�����D�O ���א���zא¡�$א�hא �GetFiles()� ��!'OV3� $��� Array 53 FileInfo �h�O�\א� �!��� n�D� '��

iא�א¡�$ א\'%'دWS�U� �MoveTo()� �$Q$%ن��P3����:��Q'�)��!א¡�$�و���K7�� �

Parent� �3��!��א¡�$�אWS�53�4�9א�א¡�$� �Root� �א��ص��Wgא�א¡�$ Driver \��!��אل� �

$� ��Kא.�%�rא���� ،� z $�T\א�U�:N3� z$� �א\�Pن�א W��'د�א �Q�e��NP>� ،� �JO �א lWS�53��+���oQ���

Constructor�� ^3�� �� 23��4(��� �KPTא ��)�: \���Hא �� �

#C كودDirectoryInfo dir1 = new DirectoryInfo(".");

� � VB كود

Dim dir1 As New DirectoryInfo(".")

� �C�H��3و����د�D :� �� �

#C كودDirectoryInfo dir1 = new DirectoryInfo(@"C:\Ahmed");

� � VB كود

Dim dir1 As New DirectoryInfo("C:\Ahmed")

� � مالحظة

�0sم�و$D�53�$�� !�XH�,����2343��N��' \h�3 D�KIدא��S$� א ��VN*��ن���kא��+$אK^3�A�IC�h�3 �و

\n \r $Q$���NP>�5P �،�:! Iوh����� 3��,���Q���5D�iא�s!�� ��'ع�א��g�]��KIא$ .���U��Fא\^�ل�@��

��$������a�� �@�!����P3���a7א �����03�a$�3'%'د�،����NP>�Kא lz�T3'%'د�و����53א� � �� �

#C كودDirectoryInfo dir1 = new DirectoryInfo(@"C:\Ahmed\Test");�dir1.Create();

� �

Page 282: خطوة بخطوة مع فيجوال بسيك دوت نت

282

VB كودDim dir1 As New DirectoryInfo("C:\Ahmed\Test") �dir1.Create()

� �KIدא�h�O�\��א����אض���!��אMQא��NP> $�¡א :� �

� � #C كود

FileInfo[] imageFiles = dir.GetFiles();

� � VB كود

Dim imageFiles As FileInfo() = dir.GetFiles()

� ��NP> *j�VIא��+$אم� FileSystemInfo D�'���t ��ض� ����n!��א\��'�h�3א\�������7¡�$�،א� ^F!

�: ���z�T���¢QHא¡�$ �� �

#C كودConsole.WriteLine(dir1.CreationTime);

� � VB كود

Console.WriteLine(dir1.CreationTime)

� �C�NP>و� a7!���VN �N��9�،��g@����� وGIF ���53 א����אض���53�h�O�3'ع��a7!�Y�3،�3^ ���9��אض�א\��h�Oא

1��5����FileInfo *j�VI אن�א ��53�2��N'عP>و FileSsystemInfo �g��D .� �� �

#C كودusing System;�using System.Collections.Generic;�using System.Linq;�using System.Text;�using System.IO;�namespace ConsoleApplication7�{� class Program� {� static void Main(string[] args)� {� DirectoryInfo dir1 = new DirectoryInfo(@"C:\Users\Ahmed\Documents\Visual Studio 2008\WebSites\WebSite4");�

Page 283: خطوة بخطوة مع فيجوال بسيك دوت نت

283

FileInfo[] imageFiles = dir1.GetFiles("*.gif");� foreach (FileInfo f in imageFiles)� {� Console.WriteLine("Name: {0} - Creation Date: {1} . \n\n", f.Name, f.CreationTime);� }� Console.ReadKey();� }� }�}

� � VB كود

Imports System �Imports System.Collections.Generic �Imports System.Linq �Imports System.Text �Imports System.IO �Namespace ConsoleApplication7 � Class Program � Private Shared Sub Main(ByVal args As String()) � Dim dir1 As New DirectoryInfo("C:\Users\Ahmed\Documents\Visual Studio 2008\WebSites\WebSite4") � Dim imageFiles As FileInfo() = dir1.GetFiles("*.gif") � For Each f As FileInfo In imageFiles � Console.WriteLine("Name: {0} - Creation Date: {1} . " & Chr(10) & "" & Chr(10) & "", f.Name, f.CreationTime) � Next � Console.ReadKey() � End Sub � End Class �End Namespace

^3�� �� �: א P���2��N'ن��� �KPTא �

Page 284: خطوة بخطوة مع فيجوال بسيك دوت نت

284

� � � �

Directory التعامل مع الفئة .4

*j�V�$7א�O���a7!�،�$Q$%�z�,�9 �JO P��5'ن�(��%FileSystemInfo�� א\�����I�53 ل�א�K��7\א�Uو�K�.��+���oQ��� fWLא����F� � ^3�� �� �KPTא���i�,��3��JO Wא�<��NPא ��n�D�KFא�،�KF� ���z$� � א �

� � #C كود

System.IO.Directory.Delete(@"C:\ahmed");

� � VB كود

System.IO.Directory.Delete("C:\ahmed")

� �

DriveInfo التعامل مع الفئة .5

�g%�Uز¤�و3��!������א\��'WS�،��gND�h�3א�א\^�ل�3��,�Drivers X����53�i אض�אل����� ���lWSא ��JOא����

Pro.CSharp 2008 :�� � � �

#C كودConsole.WriteLine("***** Fun with DriveInfo *****\n");�// Get info regarding all drives.�DriveInfo[] myDrives = DriveInfo.GetDrives();�// Now print drive stats.�

Page 285: خطوة بخطوة مع فيجوال بسيك دوت نت

285

foreach(DriveInfo d in myDrives)�{�Console.WriteLine("Name: {0}", d.Name);�Console.WriteLine("Type: {0}", d.DriveType);�// Check to see whether the drive is mounted.�if (d.IsReady)�{�Console.WriteLine("Free space: {0}", d.TotalFreeSpace);�Console.WriteLine("Format: {0}", d.DriveFormat);�Console.WriteLine("Label: {0}", d.VolumeLabel);�Console.WriteLine();�}�}�Console.ReadLine();

� � VB كود

Console.WriteLine("***** Fun with DriveInfo *****" & Chr(10) & "") �' Get info regarding all drives. �Dim myDrives As DriveInfo() = DriveInfo.GetDrives() �' Now print drive stats. �For Each d As DriveInfo In myDrives � Console.WriteLine("Name: {0}", d.Name) � Console.WriteLine("Type: {0}", d.DriveType) � ' Check to see whether the drive is mounted. � If d.IsReady Then � Console.WriteLine("Free space: {0}", d.TotalFreeSpace) � Console.WriteLine("Format: {0}", d.DriveFormat) � Console.WriteLine("Label: {0}", d.VolumeLabel) � Console.WriteLine() � End If �Next �Console.ReadLine()

� �

FileInfo التعامل مع .6

��JO �0 �+j�V*�א ��د�Q �א�s!�−א $وאل�א ��j�����lWS�Uא�1 �� - :� �� �

� �א�����bאو�א $א �ob' �א �AppendText()� �z�Tא� StreamWritter o�\א�U�����P� � �

Page 286: خطوة بخطوة مع فيجوال بسيك دوت نت

286

CopyTo()� �o�\א�¢��� �Create()� �5j���iد�Dوא�o�3�z�Tא� FileStream� �

CreateText()� �z�Tא� StreamWriter o�\א�U�����P� � �Delete()� �o�\א�fW�� �

Directory� �א¡�$ 3��!��א��� �DirectoryName� �3��!��3���Hא¡�$� �

Length� ��`���!��3 o�\א� �MoveTo()� ��o�Fא\7N'ل��$Q$%א����$Q$���NP>�،�K7N �א �

Name� �א\�o ��א� �Open()� �:! Iو�����P �!���א\��03�oא�����P3א �7א�izوא �

OpenRead()� �a7!�iz�7א� �o�\א���!� �OpenText()� �StreamReader ���א\������o+$אم!� �

OpenWrite()� �a7!�����P� �o�\א���!� �� �

9�� StreamReader ���$א�I�5D'אص�z�%�U� �VO���g��D�f���N��t ��lWS�53�.�n�D�f���Nא $Hوس� وא*j�Vא���.�� .� �

o�3�z�T�9 3^ �����+$אم Create :� �

� � #C كود

FileInfo f = new FileInfo(@"C:\Test.txt");�FileStream fs = f.Create();

� � VB كود

Dim f As New FileInfo("C:\Test.txt") �Dim fs As FileStream = f.Create()

� ���C�@N��9��ن� U�iא\'%'د�*j�V�53א��Cא��+$אم�����P3�� FileSystemInfo ��bא���a7!�،������F�

Attributes �k I�53��NP>�����،�K�b�O��i$D�KFT�������3��D'��i������b�I��S �o�\ذא���ن�א��$Q$��a7!�iz�7א� �،��S�&אم���O��...א� .� �

��KS��!��\� ^3א\�C��O��oم��9؟ �

Page 287: خطوة بخطوة مع فيجوال بسيك دوت نت

287

� � #C كود

if ((File.GetAttributes(path) & FileAttributes.Hidden) == FileAttributes.Hidden)�{�}

� � VB كود

If (File.GetAttributes(path) And FileAttributes.Hidden) = FileAttributes.Hidden Then��End If

� �K3��\م�א$+����o�\א�z�OI9��3C OR ^3�� �� �KPTא�� :� �

� � #C كود

File.SetAttributes(path, File.GetAttributes(path) | FileAttributes.Hidden);

� �ودك VB

File.SetAttributes(path, File.GetAttributes(path) Or FileAttributes.Hidden)

� �� �

Open انشاء وفتح الملفات باستخدام .6.1

����`$�א����N��+$م�א $א � �Uא P'د�� א�:� وFileMode.OpenOrCreate�$�O���3��S �03א��Open ��b אl${�_�' �،�:R�O���.�o�\א�h$%و�' lz�T�����.� :� �

� � #C كود

FileInfo f2 = new FileInfo(@"C:\Test2.txt");�FileStream fs2 = f2.Open(FileMode.OpenOrCreate,FileAccess.ReadWrite, FileShare.None);

� � VB كود

Dim f2 As New FileInfo("C:\Test2.txt")�Dim fs2 As FileStream = f2.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None)

Page 288: خطوة بخطوة مع فيجوال بسيك دوت نت

288

� �h�O�\א�z�Tوא����O ��MQC�A�IC�h9���¤�NS :� �

� �� �Lא� �ob' �א �

CreateNew� �]1I�KF����.�:�$%و�' �،�i�,��3�$Q$%�o�3�]Tא�� IOException� �Create� �.������o�3�z�Tو '�و%$�:�.������lz�T!'ق�א\'%'د� �Open� ����.�l${�_�' �1I�KF�� FileNotFoundException[א!���א\��oو �

OpenOrCreate� �' �l]Tو�א�Cن�3'%'د����' �o�\3�5'%'دא !���אPQ�_� �Truncate� �(�'��Q: א!���א\��oوא3�����!�� �Append� �5PQ�_�' �،�����P �$����FD�zא �l�I��K7وא���o�\א���O���. 3'%'دא��o�\א

C�53�����Pو���z$� �� :�،����O���.U��g(��9��S��3'FDوא�$�%$Q$�وא�� � Open א �������O+$אم���U�a7!و���� OpenWrite� �

��WS�U��D'F��h9א�אل אFileAccess �MQ אل�E ��: enum :�� �� �� �

#C كودpublic enum FileAccess�{�Read,�Write,�ReadWrite�}

� � VB كود

public enum FileShare�{�None,�Read,�Write,�ReadWrite�}

� �

Page 289: خطوة بخطوة مع فيجوال بسيك دوت نت

289

و OpenRead وانشاء الملفات باستخدام فتح .6.2OpenWrite

،������3�K^3 h���F� �. D$א�א�����P'ن�N���3��3'ع�وא�$�!�53�a7א �

� �

OpenText فتح الملفات باستخدام .6.3

��$�S'�אن�א ��F�7א\��دP��i'ن�53' 3^ ،��� �KPTא ���FileStream و �@ StreamReader �'ع א H�Oق�א�� :� �� �

#C كودFileInfo f5 = new FileInfo(@"C:\boot.ini");�StreamReader sreader = f5.OpenText();

� � VB كود

Dim f5 As New FileInfo("C:\boot.ini") �Dim sreader As StreamReader = f5.OpenText()

AppendText و CreateText الفتح باستخدام .6.4

�،��7��� �.StreamWritter א\��دP���i'ن���53'ع א H�Oق�!�5P>�a7אن�א �K^3�F�7א

� �

File التعامل مع الفئة .7

5 �،�hא¡�$א�� ���U��3ذ������@O� � ���NP>�Kא �P�g��� Static �KF'ن��4א���oQ����n�D����gN3��+)�אi�,��3��g��D .� �

iz�7א ��h���Fא��JO �S�����Pوא �NS¤�دوאل��U�i$Q$%�A�ICא :

� �א $א �ob' �א �

ReadAllBytes()� �KP,�n�D�h����� �array of bytes .�א�izא �ReadAllLines()� �KP,�n�D�h����� �OV3'!���53א�1�9 .�א�izא �

Page 290: خطوة بخطوة مع فيجوال بسيك دوت نت

290

ReadAllText()� �i$������������hوא �.�א�0�B�izא �WriteAllBytes()� ������� byte by byte� �WriteAllLines()� �KP,�n�D�����P �א��1 א �WriteAllText()� �i$��א ����P������Pوא �

� ^3�� �� �KPTא����g3�5א��+$אP>و�−X����53�� ProCSharp 2008:�� � #C كود

string[] myTasks = { "Fix bathroom sink", "Call Dave", "Call Mom and Dad", "Play Xbox 360"}; // Write out all data to file on C drive. File.WriteAllLines(@"C:\tasks.txt", myTasks); // Read it all back and print out. foreach (string task in File.ReadAllLines(@"C:\tasks.txt")) { Console.WriteLine("TODO: {0}", task); }

� � VB كود

Dim myTasks As String() = {"Fix bathroom sink", "Call Dave", "Call Mom and Dad", "Play Xbox 360"} ' Write out all data to file on C drive. File.WriteAllLines("C:\tasks.txt", myTasks) ' Read it all back and print out. For Each task As String In File.ReadAllLines("C:\tasks.txt") Console.WriteLine("TODO: {0}", task) Next �

� �

: معلومة اضافية U .net ذא��������JO� �5P>�، implemented ل IDisposable ���53ن�و�P3�U��gOQ��אن��7'م��� ��g!W�

^3�� �� �: H�Iج�WSא�א �1Nق��� �KPTא �� �

#C كودusing (CarClass newCare) { // do operations }

Page 291: خطوة بخطوة مع فيجوال بسيك دوت نت

291

� � VB كود

Using newCare As CarClass ' do operations End Using

� �

KPT ���iא��W ��9��U��7��3�n7א�n���h�O�\�03��אMQא��g3ول�א��+$א�RNא��W ^3�� �� �: א �

#C كودFileInfo f = new FileInfo(@"C:\test.txt"); using(StreamReader reader = f.OpenText()) { // code here }

� � VB كود

Dim f As New FileInfo("C:\test.txt") Using reader As StreamReader = f.OpenText() ' code here End Using

8. Stream

������H$V3�Y���3�hو3��7���K'א���zن Stream אل ذ ����YO�3�Yאو���g%�YزV7Q �n�D�5Q$��:��$!��אو���K7א

h����� �����K7����Qא�،�:! Iو�C���و����C��P�T �G א�q ����Q�g��nא\��U�n�DKP,�sequance of bytes�oא

h����� �. Cو�א � U .net �JO 9��،��7��'� �NS�، System.IO.Stream¤�א��g��J!�G ���03�K3���N��t وא ��t���4א ��JOא�م�א

n�D��JO �� �lWSא�� ��: א $وאل�وא�j�V*�א ��j����א �� �

� �א��C���bو�א $א �ob' �א �CanRead, CanWrite� �*j�VI אل� ���FD� ����� ��ذא �!��3� � � ���� Stream �K�7�� lWS

�S�����FDא C�����Pو�א �7א�izو� �

Page 292: خطوة بخطوة مع فيجوال بسيك دوت نت

292

Close()� �:! Iو�h�O�3�53��g������Q��3�Kو�����F� �א� ق�א �Flush()� �U��� ���iא\'%'د�h����� ���K� '�_� Buffer��h�������Q$א\��7�،

lWS�5PQ و%'د��D$�����F� �7��9'م��[�,��lWg!�zא $א � Buffer א��Uא 'א.0 �

Length� �`��אل��$������b�I stream �Q�� ��� �Position� ��stream �$د�א\�Pن��Uאل� �

Read(), ReadByte()� �53��D'Fאو����Q���izא�. bytes� �Seek()� ��,p\�0אsא�אل وWS�U�$Q$%ن��P3�U stream� �

SetLength()� � stream�Q$$��'ل�אل��Lא� �Write(), WriteByte()� ���Q�������� bytesאو���53��D'Fאل� �

File Stream الفئة .8.1

�Q$D�7 �א �JO �א ��1��t �א �JO �א lWS abstract class אل� 03� K3��� ��� a7!�*�§����� streaming �03 אh�O�\א .

������hא\�P'��� א\^�ل ����s'Qא �53�5��3C�i$D�U�����Pא\��oو����53.�א�izא�� א ����a7!�����Pج� .��K−א

���� ��� ��KQ'Rא bytes i'1א��lWS�@N��9א�W .� �� �

#C كودprivate void filestreamexample(string msg, string beforeendmsg) { using(FileStream f1 = File.Open(@"C:\test.txt", FileMode.Create)) { byte[] msgArray = Encoding.Default.GetBytes(msg); byte[] beforeendmsgArray = Encoding.Default.GetBytes(beforeendmsg); f1.Seek(0, SeekOrigin.Begin);�f1.Write(msgArray , 0, msgArray.Length); f1.Position = f1.Lenght-10; f1.Write(beforeendmsgArray , 0, msgAsByteArray.Length); // view total message. long totalLenght=msgArray.Length + msgAsByteArray.Length; byte[] filemsg = new byte[totalLenght];

Page 293: خطوة بخطوة مع فيجوال بسيك دوت نت

293

for (int i = 0; i < totalLenght; i++) filemsg[i] = (byte)f1.ReadByte(); Console.WriteLine(Encoding.Default.GetString(filemsg)); } }

� � VB كود

Private Sub filestreamexample(ByVal msg As String, ByVal beforeendmsg As String) Using f1 As FileStream = File.Open("C:\test.txt", FileMode.Create) Dim msgArray As Byte() = Encoding.[Default].GetBytes(msg) Dim beforeendmsgArray As Byte() = Encoding.[Default].GetBytes(beforeendmsg) f1.Seek(0, SeekOrigin.Begin); f1.Write(msgArray, 0, msgArray.Length) f1.Position = f1.Lenght - 10 f1.Write(beforeendmsgArray, 0, msgAsByteArray.Length) ' view total message. Dim totalLenght As Long = msgArray.Length + msgAsByteArray.Length Dim filemsg As Byte() = New Byte(totalLenght - 1) {} For i As Integer = 0 To totalLenght - 1 filemsg(i) = CByte(f1.ReadByte()) Next Console.WriteLine(Encoding.[Default].GetString(filemsg)) End Using End Sub

� �

المشتقة التعامل مع الفئات .8.2

�U��Nو�Hول�دC�Uאجذ������Iل�وא��Iع�א9د's'3U�����P ذ����� C� streamن� $�i$D��NQא�'אع��53א �7א�izوא�gN3 StreamWriter, StreamReaderو� StringWriter, StringReaderو� BinaryReader,

BinaryWriterא�ن���g��D�f��� �$�U�CאN���3��Sو�، .

� �

Page 294: خطوة بخطوة مع فيجوال بسيك دوت نت

294

8.3. StreamReader, StreamWriter

Y��53� �א��+$א3� �وא��^� �g,א��h�JO ��F א� �א�����9 �א $وאل n�D�'��� ،� �7��� �א �����Pא �h�JOא ^ �Eא ��iz�7א �� وא�� �: א �

StreamWriter � �

��bو�א��C�� �א $א �ob' �א �Close()� �א� ق� �Flush()� �3 buffer������h�Q'�)���!אل� �

NewLine� �$Q$%��1�� �Write()� ��Qد�D������� �

WriteLine()� �$Q$%��1��03������� �

StreamReader

�7O �: �iא ����7��'����s9!�����א $وאل�א ^ �Eא�و���Uא �� �

��bو�א��C�� �א $א �ob' �א �Peek()� �� �� �א f�Lא� izدون� .�א� � �Lא� ��PFن� i�,��3

�,p\ن�א�P3��q�� �Read()� �iz�7א �א �

ReadBlock()� �buffer .�א�53��D'F��izא $א���وو�U��g�sאل� �ReadLine()� �K3����1��izא�.� �

ReadToEnd()� ��Q�gN ���nא��,p\ن�א�P3�53�izא�.� �

: مثلةأ

�: ®�t��FD�0Fא �7א�izوא �V��o�3��������P 3^�ل �

Page 295: خطوة بخطوة مع فيجوال بسيك دوت نت

295

� � #C كود

private void write( string msg) { using(StreamWriter w1 = File.CreateText("test.txt")) { w1.Write("Start"); w1.Write(writer.NewLine); w1.WriteLine(msg); } } private string read() { using (StreamReader s1 = File.OpenText("test.txt")) { string input = null; string msg=""; while ((input = sr.ReadLine()) != null) { Console.WriteLine(input); msg+=input; } return msg; } }

� � VB كود

Private Sub write(ByVal msg As String) Using w1 As StreamWriter = File.CreateText("test.txt") w1.Write("Start") w1.Write(writer.NewLine) w1.WriteLine(msg) End Using End Sub Private Function read() As String Using s1 As StreamReader = File.OpenText("test.txt") Dim input As String = Nothing Dim msg As String = "" While (input = sr.ReadLine()) IsNot Nothing Console.WriteLine(input) msg += input End While Return msg

Page 296: خطوة بخطوة مع فيجوال بسيك دوت نت

296

End Using End Function

� �

U�����P : א\�����FD�2��� oא

�:Console �و�������FD�2א �7א�n�D�izאل

� �

ظةمالح عن الدالةسينتجالنصي سيكون بدون ع·مة السطر الجديد والذي ناتج المتغير

� �

8.4. StringReader, StringWriter

$%'Q�9��7ذ����������F� Uد�'�Q�2��N ���،�!�a7א���FDق�H�!�א string � �� �KPTא������FD�53��NP>��3�'Sو

^3 :� �

#C كودStringBuilder stbuilder = strWriter.GetStringBuilder(); stbuilder.Remove(0, 10); stbuilder.Insert(0, "Ahmed Gamal");

� �

Page 297: خطوة بخطوة مع فيجوال بسيك دوت نت

297

VB كودDim stbuilder As StringBuilder = strWriter.GetStringBuilder() stbuilder.Remove(0, 10) stbuilder.Insert(0, "Ahmed Gamal")

8.5. WriterBinary, BinaryReader

iz�7א �وא ����P �א 53��NPe h�O�3�U�5Q�+� �א binary �JO وא 53� �7�T3� ، System.Object��n�D�'��و،�WSא� ����G'ع�א]�'ReadXXXX() h�Q א�s!�����א $א �.�א\'%'د�U�iא�h�J!�0�H9א ����G��C ��7א $وאل

�JO �: א\^�ل� ��7א�izوא ���������P+$אم��lWSא �� �

#C كودFileInfo f = new FileInfo("Binary.dat"); using(BinaryWriter bwriter = new BinaryWriter(f.OpenWrite())) { double dbl = 1234.67; long lng = 34567000; string str = "A, B, C"; // Write differnt data. bwriter.Write(dbl); bwriter.Write(lng); bwriter.Write(str); }�// Reading using ReadXXX; using(BinaryReader breader = new BinaryReader(f.OpenRead())) { Console.WriteLine(breader.ReadDouble()); Console.WriteLine(breader.ReadInt64()); // == long as i think , i am not sure. Console.WriteLine(breader.ReadString()); }

� � VB كود

Dim f As New FileInfo("Binary.dat") Using bwriter As New BinaryWriter(f.OpenWrite()) Dim dbl As Double = 1234.67 Dim lng As Long = 34567000 Dim str As String = "A, B, C" ' Write differnt data. bwriter.Write(dbl) bwriter.Write(lng)

Page 298: خطوة بخطوة مع فيجوال بسيك دوت نت

298

bwriter.Write(str) End Using �' Reading using ReadXXX; Using breader As New BinaryReader(f.OpenRead()) Console.WriteLine(breader.ReadDouble()) Console.WriteLine(breader.ReadInt64()) ' == long as i think , i am not sure. Console.WriteLine(breader.ReadString()) End Using

� �

9. FileSystemWatcher

lWS�4��� C�1Q��q��و3��!��א�Y�3�o�3�¤'��������3�U��Nא.�H�� ���Uא�$%�i$�O3��JO א�h א�q� �53��g��Dא �� وא W��Qא.�Gא�System.IO.NotifyFilters enum�53 א\'%'د�U�iאل�� א�hא�q� �: א �

� � #C كود

public enum NotifyFilters { Attributes, CreationTime, DirectoryName, FileName, LastAccess, LastWrite, Security, Size, }

� � VB كود

Public Enum NotifyFilters Attributes CreationTime DirectoryName FileName LastAccess LastWrite Security Size End Enum

� �E$R����Nא���}����� 5D events א�،�Eא$�9����1���3��SW�ON����Qدوאل��oQ��� א��RN��،�hج�!'Hא��qو� �� دא

KP,�n�Dن�'P�$��9אن���:! Iو��q� � delegate ���+$م� �7א�izא�$א�K^3�Eא ��$�KQوא�� �: א �� �

Page 299: خطوة بخطوة مع فيجوال بسيك دوت نت

299

#C كودvoid MyNotificationHandler(object source, FileSystemEventArgs e)�{

}

� � VB كود

Private Sub MyNotificationHandler(ByVal source As Object, ByVal e As FileSystemEventArgs) End Sub

� ���3C� �0��Qن�C�$��9���9א��q��E$�KPT � �� �: א �� �

#C كودvoid MyNotificationHandler(object source, RenamedEventArgs e) { }�

� � VB كود

Private Sub MyNotificationHandler(ByVal source As Object, ByVal e As RenamedEventArgs) End Sub

� �� ���������و� א�ن��7N'م������D�23�����oQد�،�7Q'م�{�א.��،�h�O�\�23��4! ��$�א ��U�G�����Nאن����2j����Aא

23��4 ���aqMQ�nא\��+$م���f אن�>��Kא�KF�Q q � �N�� ' � ،� ^3U windows Forms �N��P3ن�����

G�V 3^� WS��Nא���Nא.���G!��א\��h�Oא �U���VNא �7ص�א�U�،������i�,��3���� L$���א�s9!��وאc:\ fWL א\�א. �� �

#C كودFileSystemWatcher watcher = new FileSystemWatcher(); // monitor files at: watcher.Path = @"c:\"; // monitor files when watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName| NotifyFilters.DirectoryName; // watch files of type watcher.Filter = "*.txt"; // watch events:

Page 300: خطوة بخطوة مع فيجوال بسيك دوت نت

300

watcher.Created += new FileSystemEventHandler(OnChanged); watcher.Deleted += new FileSystemEventHandler(OnChanged); watcher.EnableRaisingEvents = true; Console.WriteLine("Press 'q' to quit app."); while (Console.Read() != 'q') ;

� � VB كود

Dim watcher As New FileSystemWatcher() ' monitor files at: watcher.Path = "c:\" ' monitor files when watcher.NotifyFilter = NotifyFilters.LastAccess Or NotifyFilters.LastWrite Or NotifyFilters.FileName Or NotifyFilters.DirectoryName ' watch files of type watcher.Filter = "*.txt" ' watch events: AddHandler watcher.Created, AddressOf OnChanged AddHandler watcher.Deleted, AddressOf OnChanged watcher.EnableRaisingEvents = True Console.WriteLine("Press 'q' to quit app.") While Console.Read() <> "q"C End While

� �� �א $א z�D$����� ��7'م �N�¦!�E$��C�E$d� �3$ND� ،��(�9� �F� OnChanged ، �KP � � <�V§�5P*�دא

� WS�5Pא�!3�a7^�ل�،�<��������NNPא $א�G���Fو��C�E$� OnChanged � ^3�� �� �KPTא���−�o�\ض�א�D��q� �وو.��א�q� �: - وא �

� � #C كود

static void OnChanged(object source, FileSystemEventArgs e) { Console.WriteLine("File Changed, File Path: {0} , Change: {1}, DateTime: {2}", e.FullPath, e.ChangeType,DateTime.Now.ToString()); }

� � VB كود

Private Shared Sub OnChanged(ByVal source As Object, ByVal e As FileSystemEventArgs) Console.WriteLine("File Changed, File Path: {0} , Change: {1}, DateTime: {2}", e.FullPath, e.ChangeType, DateTime.Now.ToString()) End Sub

Page 301: خطوة بخطوة مع فيجوال بسيك دوت نت

301

� �X�%23��4 وא�ن� �... א �

�A�IC�i�3�:د��Dوא��� ������ج��53�o�3�fWL�0.'�3א�� 3��,�i �53(א �iH'Vא��� ��)�: א �

� �

10. SerializationObject � �

�f���Nس�H$ ��. gO3�5D���Q��� Object Serialization'م�אلWS�Uא�א �� �

Serializationالتعامل مع ال .10.1

: Serializable بك لتكونالفئة الخاصة عمل

�F�P ���JO ^3א א�n�Dא�� �U��3�K� : [Serializable]א�C��3ن���0Mא�� �KPTא��� :� �� �

#C كود[Serializable] public class serial { }

� � VB كود

<Serializable()> _ Public Class serial End Class

Page 302: خطوة بخطوة مع فيجوال بسيك دوت نت

302

؟ Serializable بيماذا استفيد من كون الفئة الخاصة

h�JO ���'��g 3�)��א������ ���Oد��53�i���א��K^3�*j�Vא Serializable ����P א�����9 ����i�,��א\�: �h�O�3א �7ص�א WS�،��7�����NF�����F��G�Vא�א\^�ل �

� � #C كود

serial sample =new serial(); using(Stream fs1 = new FileStream("data.txt", FileMode.Create, FileAccess.Write, FileShare.None)) { binFormat.Serialize(fw1, sample ); }

� � VB كود

Dim sample As New serial() Using fs1 As Stream = New FileStream("data.txt", FileMode.Create, FileAccess.Write, FileShare.None) binFormat.Serialize(fw1, sample) End Using �

ماذا أيضا ؟

�bא���h�JO 7��9�$��Kא ����03�K3א.�t ��53א �h�Nj�Pא��9 '����� D�¤�NS$د������ Serializable אل��gN3�،

View Stateאل��h�ROb�U ASP.net .�� �

53�$Q$� Serialization �gN3�،����Nj�P א �1ق� ��NS KF¤�א BinaryFormatter :�� �� �

#C كودBinaryFormatter binFormatter = new BinaryFormatter(); using(Stream fs1 = new FileStream("data.txt", FileMode.Create, FileAccess.Write, FileShare.None)) { binFormat.Serialize(fs1, myobject); }

� � VB كود

Dim binFormatter As New BinaryFormatter() Using fs1 As Stream = New FileStream("data.txt", FileMode.Create, FileAccess.Write, FileShare.None)

Page 303: خطوة بخطوة مع فيجوال بسيك دوت نت

303

binFormat.Serialize(fs1, myobject) End Using

� �KF� ��: Deserializing و �

#C كودBinaryFormatter binFormatter = new BinaryFormatter(); using(Stream fs1 = File.OpenRead("data.txt")) { newobject car = (objectclass)binFormatter.Deserialize(fs1); }

� � VB كود

Dim binFormatter As New BinaryFormatter() Using fs1 As Stream = File.OpenRead("data.txt") Dim car As newobject = DirectCast(binFormatter.Deserialize(fs1), objectclass) End Using

10.2. XmlSerializer

� א N'ع�א��$Q XML 5Q�§�_�D�U�E�$�אل �������h)�א �53������:א�h����� �®�Y��0Fא�h����P3.'אD$�א0F®و�:! Iو��R� ��א ����U��F���g�3�K3א\��h�Oא ���VN،�א ��q�Vא �����3�o�3 א'g��Y� XML KPT ��

� �� �: א �

كود<root> <Member> <Name>AHmed</Name> <Age>22</Age> </Member> </root>

� ���.��Attribute�Age nF و �� Element �3C Name�C22nF"$�و� �

�'ل�$Q�\א��!��\ XML 53�z$� �: ��NP> �NSא �� �

رابط

http://www.w3schools.com/xml/xml_whatis.asp

Page 304: خطوة بخطوة مع فيجوال بسيك دوت نت

304

: System.Xml.Serialization العناصر األساسية الموجودة في � �

�VN� �א �ob' �א �XmlAttributeAttribute� ����Q Attribute�WS�KQ'א�א ��n�D��VNא�:� �XmlElementAttribute� ����Q Element�WS�KQ'א�א ��n�D��VNא�:� �

XmlRootAttribute� ��$Q$R� �Root אل �XmlTextAttribute� ��g�Q'����Q ل XML Text� �

� �� �

����JO ��lWS�KQ'Rא� ^F! XML 5D ���FD��Q�� Serialization :�� � #C كود

class Members { [XmlAttribute] string Name; [XmlAttribute] int Age; }

� � VB كود

Class Members <XmlAttribute()> _ Private Name As String <XmlAttribute()> _ Private Age As Integer End Class

� �������lWS�n�D�hא ��JOوKFD����53 وא�ن���$ ,o�3�KP ��`$�א Serialization�n�D�2��N א�s!��א��'ع��53א

XML ���� . א

� �� �� �� �

Page 305: خطوة بخطوة مع فيجوال بسيك دوت نت

305

� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �

net 2008.برمجة النوافذ في � �� �� �� �� �� �� �� �� �� �� �� �

الباب

14

Page 306: خطوة بخطوة مع فيجوال بسيك دوت نت

306

� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �

Page 307: خطوة بخطوة مع فيجوال بسيك دوت نت

307

مقدمة .1

�F�P ��3��R زViusal �3 ����4אbא�t �h�qא ��S���4א�KLא ��R����FV��K��T\وא%�h�g א�G�03א���VD�U�،م�$+��F� �����N3 ��4 �h�qא�K�.��3 Visual ��3�03�،د�'P ������g%وא���H�n�D�4ن��'P����N�

:�N�Q و���'�b�53�� ��Uو.��א ��W�ONא�s!�����א�Oµض�3���A'א ���FVذI]� .� � U .net ���P\א�hz�% System.Windows.Forms �¤�NS�،�����N3��g%وא���FV� �:� �7$م� �����3�K���ج��

�53��NPeز�Qد���z�O��iא ��'I�53���3 ل���53��D'Fא�وא��D'F���MQC API f��� ���� GDI+���3دوאل�VV+\א ��� �h�3'2D 03و� אIC� ، .net 3.0 ��N7����!'و��PQ�3� �N �hz�% Windows Presentation

Foundation������ �����fאH�V�Iא �3� �א ��'WPF h��3 אو iz�O��53�$Q�� �0O��3�$L���4 1��5���h�7אFs�. %$א �� �

بالكود Windows Forms بناء .2

h����\אم�א$+�����C$��C�Kن��. �t �PQ�3��Nو�'!��5Fsא���i�Sא��g��!و Visual Studio אن��7'م��KMOQ�،z�N��� ����n���R} KFD���O����g!�0�1و��gNDذج����$א�'� Windows Forms .�� �

i�PO\א���O���.� Wא Notepad ����� ^3�o�3� z�T�����.� ، WindowsForms.cs��������U� C$�N�����53و� ،�. א P'د �

�oQ��7'م���N��9وC�J!T3�7���JO ��Forms ^3 ��53א�� �KPTא��:�� �� �

#C كودclass SimpleWindow : Form { }

� � VB كود

Class SimpleWindow Inherits Form �End Class

� �E$��U7'م�Nوא�ن�� Main :N3��+���z�D$���� h���P3��!�sא�n�N��9�، System.Windows.Formsא��W �،���K3�P P��KPT'ن�א P'د��� � �� �: א �

Page 308: خطوة بخطوة مع فيجوال بسيك دوت نت

308

� � #C كود

using System; using System.Windows.Forms; namespace WindowsForms { class Program { static void Main() { Application.Run(new SimpleWindow ()); } } } class SimpleWindow : Form { }

� � VB كود

Imports System Imports System.Windows.Forms Namespace WindowsForms � Class Program Private Shared Sub Main() Application.Run(New SimpleWindow()) End Sub End Class End Namespace Class SimpleWindow Inherits Form �End Class

� ���!�'S���D��3�K��a7!א�ن� Cmd ،א��ص���� � �� ��: و�������K^3��3Cא �

� � كود

csc /target:winexe *.cs

� � مالحظة

���.���n�D�KF����3$ND'د�!�`'אل�����vbc�53�9$��cscא��+$م� �

Page 309: خطوة بخطوة مع فيجوال بسيك دوت نت

309

H��\�X�SW ������$�א� oQ����$��23��4،�و� ��+$אم�C�U��P3ن�،���P'ن�א csc �J�,�2��N א�i�S�%ن�'P�

�: WS�K^3א �

� �

א���53א�C�*j�Vو����W�ON��n .... א �OT!��.�وא�ن�����N��P3א ���U��PR���א��K^3�،�*j�Vא 1'ل�وא ��ض�3^ �� �KPTא ���Object Browser א�وא��3א �5P>�tא 'b'ل�� �I�53��g ل�� :� �

� �

�א 1'ل�q�� ^3��N��P3א�>$�אن���W � �� �: وא ��ض�و�'��1:�،� Wא���P'ن��'د�א H'Oم��� �KPTא �� �

#C كودclass SimpleForm : Form { public SimpleForm (int height, int width, bool center) {

Page 310: خطوة بخطوة مع فيجوال بسيك دوت نت

310

Width = width; Height = height; if(center) CenterToScreen(); } }

� � VB كود

Class SimpleForm Inherits Form Public Sub New(ByVal height As Integer, ByVal width As Integer, ByVal center As Boolean) Me.Width = width Me.Height = height if center=True Then CenterToScreen() End If End Sub End Class

� �U���C�@N��9�5P Run �Q�F7'م�����f'� ^3�� �� �KPTא���،��JO �: ��Z�3Hא����hא �

#C كودstatic void Main() { Application.Run(new MainWindow(200, 300,True)); }

� � VB كود

Private Shared Sub Main() Application.Run(New MainWindow(200, 300, [True])) End Sub

lWS�n�Dل�'VLא����P3���:��א�����@N��9 ل I�53���7 �... ��Args �7�����NF�����F א �

اضافة أدوات بالكود .2.1

��H��NF��� 'א.I�53�0 ل� P'د�،�%��zא $و�Hא�ن��n�Dو�0sא�دوא�hא\+���n�D��Oא H'Oم�،����Qذ �א H'Oم������� �� ��: א�وא��3א �

Page 311: خطوة بخطوة مع فيجوال بسيك دوت نت

311

��bو�א��C�� �א $א �ob' �א �Add() � �

AddRange()� �

�!�s9א�h���F� � �

Remove� �RemoveAt()� �

fWLא�h���F� � �

Clear() 0�Fא����\� �Count lWS�0.א' ��i$�O3���b%$א�ND$�(�و�h9א\�و�n�D�Hא� D$د�א9دوא�U�،�hא

hא�دوא� �� �

h��3א�دوאC �JO ����}$��System.Windows.Forms K א ��NP>�tא3��g��F`!�،��g�!�s'%'د����א�،

�g�Q¯H�n�D�hد'���t �... א9دوא�hא �

اضافة القوائم .2.2

����<�5Pא��وج�� �� �n�D�aqMز�RN� Hول�א 'b'ل� ��KPTא�� Exit �Fj�7 : �Uא

oQ��7'م���N��،��1��ن��'Pد���'P ���Fj�7وMenuStrip ���53 א ToolStripMenuItem��Fj�7 ���b�Nא :� �� �

#C كودprivate System.Windows.Forms.MenuStrip menuStrip1; private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;�

� � VB كود

Private menuStrip1 As System.Windows.Forms.MenuStrip Private fileToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem Private exitToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem

Page 312: خطوة بخطوة مع فيجوال بسيك دوت نت

312

� �،��$�53�9و�0sא�9'אد�3��,�BuildForm �i א��g و �Constructor 5P א��i'1א ^������KFD��Sدא ���Uאل

��. �U Constructorאل �� �

#C كودpublic SimpleForm() { Text="Example. Simple Form"; BuildForm(); }

� � VB كود

Public Sub New() Text = "Example. Simple Form" BuildForm() End Sub �

� � ����b�Nو�������gO�M+$אم א�ن��7N'م�z�0א��s'7'م��N��،�� ��lWS���4� Add �Fj�7א $א ����j� �: א �

� � #C كود

fileToolStripMenuItem.Text = "&File"; menuStrip1.Items.Add(mnuFile); exitToolStripMenuItem.Text = "E&xit"; menuStrip1.DropDownItems.Add(mnuFileExit);

� � VB كود

fileToolStripMenuItem.Text = "File" menuStrip1.Items.Add(mnuFile) exitToolStripMenuItem.Text = "Exit" menuStrip1.DropDownItems.Add(mnuFileExit)

� ��!�sא��S�����^ �Handler �VN א��i'1א�aqM � �E$L Exitא�� �KPTא�� :� �

� � #C كود

exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click);

� � VB كود

Page 313: خطوة بخطوة مع فيجوال بسيك دوت نت

313

AddHandler exitToolStripMenuItem.Click, AddressOf exitToolStripMenuItem_Click�

�P'ن�א ��Fj�7א������bل�����j� א��F��N$�א ��Fj�7אIC Form مH'O� ��g�!�sא�$���� �� �KPTא�� :� �� �

#C كودControls.Add(this.mnuMainMenu); MainMenuStrip = this.menuStrip1;

� � VB كود

Controls.Add(Me.mnuMainMenu) MainMenuStrip = Me.menuStrip1

� �Hز�n�D�aqM ��: Exit א�ن��'7��f'م�������Pא�E$Lא��ص��� �

� � #C كود

private void exitToolStripMenuItem_Click(object sender, EventArgs e) { Application.Exit(); }

� � VB كود

Private Sub exitToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Application.[Exit]() End Sub

� �Wgא�PQ'ن�� �KPTא���� �B9د�א'P �: א �

� � #C كود

class SimpleForm: Form { private System.Windows.Forms.MenuStrip menuStrip1; private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem; public SimpleForm() { Text="Example. Simple Form"; BuildForm(); } private void BuildForm()

Page 314: خطوة بخطوة مع فيجوال بسيك دوت نت

314

{ fileToolStripMenuItem.Text = "File"; menuStrip1.Items.Add(mnuFile); exitToolStripMenuItem.Text = "Exit"; menuStrip1.DropDownItems.Add(mnuFileExit); exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click);�Controls.Add(this.mnuMainMenu); MainMenuStrip = this.menuStrip1; }�private void exitToolStripMenuItem_Click(object sender, EventArgs e) { Application.Exit(); } }

� � VB كود

Class SimpleForm Inherits Form Private menuStrip1 As System.Windows.Forms.MenuStrip Private fileToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem Private exitToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem Public Sub New() Text = "Example. Simple Form" BuildForm() End Sub Private Sub BuildForm() fileToolStripMenuItem.Text = "&File" menuStrip1.Items.Add(mnuFile) exitToolStripMenuItem.Text = "E&xit" menuStrip1.DropDownItems.Add(mnuFileExit) AddHandler exitToolStripMenuItem.Click, AddressOf exitToolStripMenuItem_Click Controls.Add(Me.mnuMainMenu) MainMenuStrip = Me.menuStrip1 End Sub Private Sub exitToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Application.[Exit]() End Sub End Class

� �

Page 315: خطوة بخطوة مع فيجوال بسيك دوت نت

315

net . Viusal Studioانشاء فورم عن طريق .3

:��a7!�Visual Studio 2008�Fj�.�53�،� File-New H���I����.�Windows Forms Applicationא!��

��� � MenuStrip אTool Box ZI א�ن��53א ��Fj�7א����� : ،���`$�א �KPTא

Page 316: خطوة بخطوة مع فيجوال بسيك دوت نت

316

Y��3�aqM �ND$�א ،��Fj�7 ���Q$�و����FVא �Fع���O� ����.����!� �Fא�ن�و� �VN� ��`$�א��S�%��3א� �n�D Exitא

� �� �KPTא�������P� :

n�D�aqsد�،�و����53א'P �. و%�F5 X א�ن�א���Gא �

א^��Kg�C���bC�0s' �.... C���3��O���9Cن�א �� �

. اآلن ، سنتعرف على محتويات الواجهة الرئيسية

n�D� �N!��وس��H$ �3��������53��7א�U���� �g%وא�U�7ط�N �א�ن��N'א�Kbא ���Visual Studio��n�D�f א ،�g%א' ����b�7ط�א��N �. א ��'��3 א �

ToolBox:

�g� '�_��S�&�5PQא�<��NNPא&'�d 53�lH�g��n�Dא�دوא�hא ��j����א ����tج�א�، View - ToolBox .�� �

GQ'�� ،��03ذ ����3زאل�����N��P3א��SC All Windows Forms ��!�sא9دوא�hא ����tج�� �3��g'%'د�i���א�Q���5D�،�:� ��A�IC�hدوאC��!�sوא�$Q$%�GQ'�� Add Tab ���53و Choose Item �W وא�H���Iא ���VNא

:�!�G��� :

Page 317: خطوة بخطوة مع فيجوال بسيك دوت نت

317

Tabs Group:

�0�B�n�D�'�d�t ����<��NPא �gR�O���F.��gN���K7Nא\��h�Oوא\�Vد�Hא�،� .� �F���n�D�aqM <��NPאCtrl+Tab� ^3�� �� �KPTא�����'�O\א�h�,�T �$�Y��KQא�� �:� �

� �

Properties Windows:

Page 318: خطوة بخطوة مع فيجوال بسيك دوت نت

318

� �

U�G����t ��$���g�Q����Q��VND��n�D�l$Q$א H'Oم�،��lWSא j�VI��s'��iH'V*�א�$� }$�!���gא�j�V*�א�Fj�7 ��. ��b�NDא �

Solution Explorer:

�Dو�T3�h�Q'�)��OV��53��NP> W!��53'א Forms h�J!و�C Classes و�H'b�n����. Resources אو� �

Class View:

Page 319: خطوة بخطوة مع فيجوال بسيك دوت نت

319

� �

�Q$ �iא\'%'د�h�JO �. و��gVj�VIودوא��kوI !: א����אض�א �� �

في انشاء النماذج ؟ Visual Studio.net كيف يعمل ال

@ON� �Fj�.�53��Q$ P'د�،���`$�����S�NF����t �: � ���Solution Explorer�h�O�3 א ��7Q�1א �

1- Form1.cs: � � H'Oم�Q$و�53��NPF���Q���5D��Qא ��U��PRא 0s' אMQ��}$�א��'אد�א WS�U��g����P���F.�tא� [Design] א

53��אو�א n�D�Y��3�aqM א\�7Q�،�o'م��^ ،��Q'�� ��53�K7Nא ��Fj�7א���Y�s' �$�Y��KQא� ���Y�4\א �א��gد�א��ص��'P ���Oא�iאدא�.n�D�aqM 3��7^� �����Q���5DאQ�1��� א H'Oم����Hא\�وس�א�<�KFD��NP> �5ذ

0s' ��.C Class Diagramو���Design - Code n وא�H���Iא �

2 - Form1.Designer.cs:

hא�دوא�z�T�����bא�9'אد�א���${��NS �U��S�N3$+א���t وא H'Oم�،� '�.R�O���F:���`$�א�'אدא�,���������gא : WSא�א $Hس א���zא�ول�53

Page 320: خطوة بخطوة مع فيجوال بسيك دوت نت

320

3 - Form1.rex:

:! I+$��3و��א\�Hد�V\א�n�D�'�d .� �

:Forms.Windows مجال األسماء.4� �

Forms . Windowsلعناصر الفئات الرئيسية .4.1

�VN� ��א�lWS�U�����9א ��JO،�و�53���T3�'Sא �h�JOא א H'Oم�S'�א�� :� �

System.Object h�Nj���KP � net. א ���VNא�����9 �

System.MarshalByRefObject

�53�5PF�Nא 'b'ل byref �� مH'O �א �

System.ComponentModel.Component ��Icomponentא\��53���T3 Interface nFאل �

Page 321: خطوة بخطوة مع فيجوال بسيك دوت نت

321

System.Windows.Forms.Control

�7�9�K�VO� ���: �. ��N�Nو �

System.Windows.Forms.ScrollableControl �אل 53 �א��+$אم K%א Scrolls ��bא��� lWg�� 0�F�Q� �אن 5P>� �gN3� ��T3� �VND� �א ، .

System.Windows.Forms.ContainerControl

53 n�D�'�d�5אن�P>�:��%�K%א Controls '�d�5אن�P>��gN3���T3��VND�א� ،�A�IC �n�D�:�Iא$�A�IC��b�ND .� �

System.Windows.Forms.Form

�7�9�K�VO� ���: . ��N�Nو

� ��אل �Cن �א Form �JO ذ���� 53���T3 System.Windows.Forms.Form ودوאل��*j�VI� 0�Bن�¦!� Wא� ،

: �K7�N���JO �$א�lWS�EאCא�ن و��g��D�f���N���3��Sو�،������ �� ...�� �

Form خصائص الفئة .4.2� �

��bא��� �ob' �א �AcceptButton� �� �א\��+$م��H n�Dא W�C�W�ON����Qوאaqs�$ND�l�3�Q$$�א

Enter� �ActiveMDIChild� �Q$R$�א���5א PQ��3$ND aTN'ن� �H'Oم�WS���Q�،�z�N�Cא�� �

IsMDIChildIsMDIContainer� �Q$R$�אWS�K�%�����P3א�א H'Oم� A�IC�h�3H'O �5s��� �CancelButton� ��g�Q'����Q ل XML Text� �

�ON����Q�W �א H� �aqMQא\��+$م� �C�WوאQ$�3$ND�l�3$�אHز�n�D Esc� �

ControlBox مH'O� �KS�$Q$� Control Box 9م�C� �FormBorderStyle مH'O �$ود�א�KP,�$Q$�� �

Menu ����j� �H'Oم �$Q$�א ��Fj�7א� �MaximizeBox �����A�IC�i$��Cم��9،���`$�وאqV� �وא�P� �Dض�ز�Hא

Minimize�T ��ض�ز�Hو�U�:�sא��O� ���aQא �

Page 322: خطوة بخطوة مع فيجوال بسيك دوت نت

322

ShowInTaskbar Uض��� �'NQ$وز�Cم� 9�Q$$�א���O� �א �aQ�Tא �StartPosition $ND� �H'Oم� �Qא$� �א �17�� $Q$� ���Q� i�3� ��ول lH'g&

53� �SH���Iא ~ �א א\�I�enumeration �nF ل

FormStartPosition� �WindowState �אل� 53� �SH���Iא� ��Q� t �وא �א H'Oم � ��� $Q$

enumeration nF�\א FormWindowState� �� �

: على العناصر التالية FormStartPosition المسمى enumerationالـويحتوي

� �

: فيحتوي على FormWindowStateأما

� �

Form دوال الفئة .4.3� �

� �א $א �ob' �א �Activate()� �TN� ��aא H'Oم� �

Close()� �א� ق�א H'Oم� �CenterToScreen()� �Uم�H'O ��oV�N3א �T,� و�0sא �

LayoutMDI()� ��Sو%'د�� ���U�z�Nא���h�,�T ��$Q$��)�م��Dض�א �ShowDialog() iH'V�� ���$ �D Dialogض�א H'Oم 9�� �gO�I� �א �%'ع�\� 5P>� 9���r

�g. א�� �� �

Page 323: خطوة بخطوة مع فيجوال بسيك دوت نت

323

Form أحداث الفئة .4.4� �

E$Lא� �ob' �א �Activated� ��3]��zم��'אH'O אو�7Q��3$ND'م� WS���1NQ Activateא�א�a�TN����Q��3$ND�E$Lא

:��P3��1��n�D��1TN �א\��+$م�´��:�א �iW!�Nא �Closing� �NDא�� ق�E$��C$�Q��3$� �Closed� �$�Eא����g�NQ��3$NDق� � �

Deactivate� �א H'Oم����I��z�,�����PR� ��GSWQ��3$NDא �Load : ،م�H'O ����Q��K�Fא �3$ND �n�Dم�H'O �א H'g&�K�.�E$Lא� و WS���1NQ�5Pא

� bC��,�T �`�GNوא��C�53�$^�−א� �D'�,�z�1Iא� -� �MDIChildActive $Q$��$ND� ���U�z�Nא���h�,�T �و%'د�S �وא��53�$א �

� ��. ،�و Wא�!�P��0�F�Q�'g!�����א���gوא N��t�����53���T3 Control �NS��gsא ��F� �JOذ�����א7�����MQ��،�!¦ن�א H'Oم �

� �

Control الفئة .5� �

Controls خصائص الفئة .5.1� �� �

��bא��� �ob' �א �BackColor� ���Oن�א��' � �ForeColor� 'ن�א���Iא$ N*�א� �

BackgroundImage� �iH'b���O�I� �Font� �:! Iو�:D'و��:F`��א��aو �

Cursor $ND��g(Q�W �'�H!'ق�א�دאC�iو�א H'Oم �'ع�א\p,��א� �א �Anchor אل���b�I�03�K3���� Dock ��^��t �P3ن�א9دوא�n�D�hא H'Oم���Fg3 وא

�`��א H'Oم�q�� �

Page 324: خطوة بخطوة مع فيجوال بسيك دوت نت

324

AutoSize iدא ��j�7����`� '�)�G���g��Q� �Top X �'�� ��0s'3א9دא�iאو�א H'Oم��53אL$�א �Left X  ���Qא��$Lم��53אH'O ��0s'3א9دא�iאو�א �

Bottom 53م�H'O  �0s'3 Xא9دא�iאو�א�KOא���$Lא� �Right 3X  �'�0sא9دא�iאو�א H'Oم��53אL$�א�<�5 �

Bounds ود$Lא� �ClientRectangle 0��3�53� �

Height 1'ل �א �Width ض�� �א �

Enabled :3$D�53م�H'O ��$Q$�א�����P3א ������PRدא�iאو�א �Visible z�O�I9وא�H'g( �א �

ModifierKeys אل�� ���izא�. ModifierKeys אل�K^3 Alt و Ctrl و Shift� �MouseButtons ط��53א\�وس'qM\א�H� ��)�א\oV�N–�אQ���C�−<�5( 3��!��א �

TabIndex �b�N� ���7ل������gN'א��1�$د������Gא� Hز Tab� �TabStop Hل�ز I�53��VN�� ��0N3 Tabא 'b'ل� �Opacity �%Hد �Y���3���!�OT ��1و�0א �

Text iא9دא�KIא\��وض�دא�*N �א �Controls �NPe �n�D� �.�دHא �VN� �א ���ن � ���U� ���Iא$ دאوא�hא� �א 'b'ل 53

:�Iدא��b�ND�X��א���� �� �

rols Contأحداث الفئة .5.2� �

E$Lא� �ob' �א �Click� �aqM ���\�وس א �

DoubleClick� ����Y�1qs\�وس� �MouseEnter� �������1ق�א�دאiدI'ل�א\�وس� �MouseLeave� �iوج�א\�وس��1��53ق�א9دא�I� �MouseDown א\�وس�Hز�aqs KO�9� �

MouseUp א\�وس�H��1زqs�5D�0�b9�0א!H� �

Page 325: خطوة بخطوة مع فيجوال بسيك دوت نت

325

MouseMove א\�وس�H'�D �17ق��'! .MouseHover� �MouseWheel אل�n�D�aqM Wheel� �

KeyPress Hز�aqsدH'��P ���53א �KeyUp ط'qM\א�H� ��5D�0אb9�0א!H� �

KeyDown KO���H� ��aqsא �DragDrop '!�iאدא�GR��� �Lא�iق�א9دא� �DragEnter A�IC�iل�אدא�¡�iل�אدא'Iد� �DragLeave وج�I� �DragOver ق'!�H'�Diא�دא�� �

Paint ��� �$�Eא� �� �� �

Control.Forms.Windows. System أدوات .6� �

א�دوאC�،�hول��C��S��g�!��3����D��17ن���Kא�دوא�53��7�T3�h ذ������Uא $Hس�א ������¦�7N���N'م�������אض�JO Wא�!¦ن Controls א C *j�V����0�F����iدאC i�,��3����� ��U��gא $Hس�א�T���NF.�t . وא��$א�Eא

$�NQ ���א�ن��N����ض������j� �. א�دوא�hא �

� �

6.1. Button � �

� �

K^3�*j�Vא������n�D�'�d�،%$א��د�D��3C�Hز :� �

FlatStyle�:�g(3�$Q$� �3א��Hز .� �TextAlign�:�3א��H�53ز�*N �. �0s'3א �

Page 326: خطوة بخطوة مع فيجوال بسيك دوت نت

326

6.2. CheckBox � �

� �

*j�VI�n�D�'�d�،��b�ND�i$D�H���Iא��NNP>�،א\��$د��H���I9א�Hز K^3���!�sא :� �

CheckState�: H���I9א�� �� .� �ThreeState�: KFd�:�'��$Q$R� ��^ �����b�I�)�K�O3−�K�O3���−��j�%�K�O3� .�(� �

6.3. RadioButton

� �

K^3 �gN3�K��0s�i�3�53��^���:3א��+$א�$Q����N��' � ،�$��وא H���I���� ��F�Q�:NP U panel א �����و

o��� .� �

6.4. ComboBox وBox List � �

� �

Page 327: خطوة بخطوة مع فيجوال بسيك دوت نت

327

$� H��I�5Fs�53�H���Iא�h،�א9و���ob�Uوא��Fj�. X'�1\א��`Lא�G�������^ �. وא �

U��S�NF����t ��.... Items.Remove و '�d Collection.List K^3 Items.Add��0�B�n�Dא�j�V*�א �

6.5. Textbox � �

� �

�s9א��gVj�VI�����،��g�Iدא�����P �F��+$م�����F�����V��iدאC��! :�� �

ReadOnly:� a7!�iz�7א� ��g��% .� �PasswordChar:� ل�Iد �*N ��%��0��3�Kא���U��g(Q�W �. א ���3א �

MultiLine:� �g��´�v�F� �. �3�$د�iא���1 א �maxLength:� *N� �nV.91'ل�א �. א �ScrollsBar�:��Q�F� �.א,����א �

WordWrap�:�K^3�iא�دא��!������: 'bو�$���*N �.������23ووHد�3^ �א ��f�Oא ��JO ��53א �7�T3� �gא����� �System.Windows.Forms.ScrollableControl H���Iא� �N��P3��� ���P'ن Wא� ،

��. ScrollBars א\�enumeration nF و�53�0sאل �

:تطبيقات سريعة على مربع النصوص 7��A'��KאH.�م�3^ �−Q�9ص�'VN �:����0��3�Kא �� �

#C كودprivate void TextBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) { if ((e.KeyChar < '0' | e.KeyChar > '9')) { e.Handled = true; } }

� �

Page 328: خطوة بخطوة مع فيجوال بسيك دوت نت

328

VB كودPrivate Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress If (e.KeyChar < "0"c Or e.KeyChar > "9"c) Then e.Handled = True End If End Sub

� �−�*N ���F���5D��Rدא�0��3�KIא �:�א �� �

#C كودprivate void Button1_Click(object sender, System.EventArgs e) { // �R� �א W���'�R��n�Dאول��P3ن����`��אq�\א int index; //�R� ����Fא string SearchWord = "Ahmed"; //iدא  א�7��9ل� TextBox1.Focus(); //�Qא$� �א W��U�l�N!�Dאq�\א�U��F�P و�P3�0sن��$א��Qא index = TextBox1.Text.IndexOf(SearchWord); // �k'1و���F�P �$Q$�א ������F�P+$אم�j�VI*�א �$��53�$Q$Rא��Qא

TextBox1.SelectionStart = index; TextBox1.SelectionLength = SearchWord.Length; }

� � VB كود

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' �R� �א W���'�R��n�Dאول��P3ن����`��אq�\א Dim index As Integer '�R� ����Fא Dim SearchWord As String= "Ahmed" 'iدא  א�7��9ل� TextBox1.Focus() '�Qא$� �א W��U�l�N!�Dאq�\א�U��F�P و�P3�0sن��$א��Qא

Page 329: خطوة بخطوة مع فيجوال بسيك دوت نت

329

index = TextBox1.Text.IndexOf(SearchWord) ' �k'1و���F�P �$Q$�א ������F�P+$אم�j�VI*�א �$��53�$Q$Rא��Qא

TextBox1.SelectionStart = index TextBox1.SelectionLength = SearchWord.Length End Sub

� �

6.6. Label � �

� �

��ض�iدאC ص'VN ���$�KQ א�����.���–�a7!�.� �� �

6.7.GroupBox و Panel � �

� �

�g�Iא$��A�IC�hدوאC�0s�5وP>��Qو���hدوאC .� �� �

6.8. RichTextBox � �

� �

Page 330: خطوة بخطوة مع فيجوال بسيك دوت نت

330

�gN��� �א H�Oق ،� �O����h�7��N�� n�D�'��אن�� �g��Q'�[��F���*�� iدאC و�Y TextBox Yق��H�O �א 'S

Notepad و Wordpad �H'bو�h�7��N��n�D�'�d�0��\��7��� .،�א �iH'Vא

�� �� �: ��'��n�Dא�j�V*�א�s9!���א �

Wordwrap�: *N �Q$R$�א ��f�Oא .

Lines�:��1د�א��$D�$Q$R� .� �Select�: 5D�*N �. ��Qو�'ل��$���17���Qא��Qو���Q�g،�אو��$���17א ��53�z�%�$Q$Rא �

SelectionXXX�:aI����N��$Q$R� �`��zא]$د�،��K^3א �'ن �SelectionColor.�� �DetectUrls�:�7ل���� �����.��g��%��و�j�7�����Z�9�5אQو�ND�$Q$R� .� �

�F� �� �� �: '�d��n�Dא $وאل�א�s9!���א �

LoadFile�: ��O Y�3�H��3�53��V��o�3 .� �SaveFile�: U�o�\א�ªOLY�3ن��P3� .� �

:أمثلة سريعة � �−��V��o�3�53�*N �7א�h�Q'�)�izאدא�iא���I��o�3�U�ªOLو����53א:� �� �

#C كودRichTextBox1.LoadFile("C:\Ahmed.txt", RichTextBoxStreamType.PlainText);�RichTextBox1.SaveFile("C:\Ahmed2.txt", RichTextBoxStreamType.PlainText);

� � VB كود

RichTextBox1.LoadFile("C:\Ahmed.txt", RichTextBoxStreamType.PlainText)�RichTextBox1.SaveFile("C:\Ahmed2.txt", RichTextBoxStreamType.PlainText)

� �� �א N'ع 53� h�7��N�� n�D� '�d� �V�� o�\א� ���ن ' ����rtfو �א N'ع a�M�� �!�7N'م

RichTextBoxStreamType.RichTextא�KPT ���� ^3�� �� :� �� �

#C كودRichTextBox1.LoadFile("C:\Ahmed.rtf ", RichTextBoxStreamType.RichText);�

Page 331: خطوة بخطوة مع فيجوال بسيك دوت نت

331

RichTextBox1.SaveFile("C:\Ahmed2.rtf ", RichTextBoxStreamType.RichText);

� � VB كود

RichTextBox1.LoadFile("C:\Ahmed.rtf ", RichTextBoxStreamType.RichText)�RichTextBox1.SaveFile("C:\Ahmed2.rtf", RichTextBoxStreamType.RichText)

� ���R� ����FD:��دא�iא N*�،�و �lWS�5Pא\�7N��i'م����'�2j����K��5Qא��W ���Rא 1��$����3^�ل�א��Nوא�ن��

�A�I����i$��:��53�9$���S$Q$وא �� �

#C كود int index=0; while((index = richTextBox1.Text.IndexOf(textBox1.Text, index))!=-1) { richTextBox1.Select(index, textBox1.Text.Length); richTextBox1.SelectionColor = System.Drawing.Color.Red; index += textBox1.Text.Length;� } MessageBox.Show("h�F�P ;("��א�5Q'���53�z�g��9א

� � VB كود

Dim index As Integer = 0 While (index = richTextBox1.Text.IndexOf(textBox1.Text, index)) <> -1 � richTextBox1.[Select](index, textBox1.Text.Length) richTextBox1.SelectionColor = System.Drawing.Color.Red index += textBox1.Text.Length End While MessageBox.Show("h�F�P ("��א�5Q'���53�z�g��9א

� ��� �� �KPTא���W�ON� �:و��P'ن�����2א �

� �� �

Page 332: خطوة بخطوة مع فيجوال بسيك دوت نت

332

� �� �� �

6.9. Timer � �

� �

iدאC E$�� �k� ،��.pF� Ticker وאK�� lW�ON����Q�W Interval KFD� � ���U�$�O�� ،�Y�3 �:QHא�P�� אوא�3��N3ق�زHא'O� .� �

� ����b�I�a�M���.� ^'א���،����D���KFD3^�ل�Interval����1000�a�M���.� �MQא� ،�i$�����دل�������وא �3��Sو�

���bא��Enabled����True�E$Lא�U�� �� �: �TickאMQ��و.��������Pא P'د�א �� �

#C كودlabel1.Text = DateTime.Now.Hour + ":" + DateTime.Now.Minute + ":" + DateTime.Now.Second;

� � VB كود

label1.Text = DateTime.Now.Hour + ":" + DateTime.Now.Minute + ":" + DateTime.Now.Second

Page 333: خطوة بخطوة مع فيجوال بسيك دوت نت

333

� ��:و��P'ن�א WS�K^3��J�,�2��Nא� �

� �

� �

6.10. TreeView � �

� �

�iدאCض��� ،�i�`T :�אC��!�s���b�NDو���S�VND Nodes �g!WאS�����9' א I�53�5P>�W �. وא ��iא�دא�lWS�5Fs�:! Iو�H'b��!�sא�n����Uא �N����و�q� �:<�5Pא �

� �

� �� �

�� �� �:<��NPא ����n�D�fא\��53��gND�$Qא �א��aא �� �

رابط

http://msdn.microsoft.com/en-us/library/system.windows.forms.treeview.aspx

Page 334: خطوة بخطوة مع فيجوال بسيك دوت نت

334

� �

6.11. Progressbar � �

� �

�S� �א�����9 :Vj�VI� ،� �א �7$م �,p3ض��� Minimum - Maximum ��!�sא�nوא�د��n�Dא�� $Lא�$Q$R� ��b�+� Step H$73�$אQ$R� 7� �����Fא �7$م�I�53 ل�א��style ��b $م����NP>�،�i�3�K�Q$$א Style

C�7��t ��. ProgressBarStyle א\�enumeration nF �53אل وא �

�7�9���bא���$Q$��5P> ��bאم�א��$+���� Value .�� �

6.12. Trackbar � �

� �� �

:��T3 K Progressbar K^3�،�:�F�7���PR���53א�����NP Trackbar h'V �. א��ص���!�0و��OIא �

6.13. DateTimePicker � �

� �

iدאC h�.وא�و�¢QHא'� �א H���I9� ،�� ��bض��53א���� �Q$R$�א��'�Xא ����NP>Format�¢QH�Q$$�א��'�Xא� ���QH¢�و�$��5P>ValueאVL'ل��n�Dא ��QH¢�א\��وض��53א�����b.�א\��وض��nV.א�$��0s�5وP>��F��

bא����Q���5D�nد�C�Y��MinDate - MaxDate.�� �

Page 335: خطوة بخطوة مع فيجوال بسيك دوت نت

335

�g��b�O��n�D�f��� �و�9%$و�53�Aא��D�sא '.���Uא �i%$א^��h3'.�0 ... א�دوא�������� Wא����O��C[ن�אiدאC�KP �����VO�����,�${�����: �PQ�3و�'!�� �

� � رابط

aspx).71.VS(984065aa/library/us-en/com.microsoft.msdn://http

� �

7. Dialogs

�QHא'Lא�h����\�5אD� �ND's'3� �Qא$��U 7'م�N�� ����^ �א ��������Uא\� ،� �Nص���I�$��وא ��FV��� �Cو9 �7N'مn�D�f��� �� ��j�T �. א��+$א��h�3���א\�����hאL'א��QHא �

�. '!� z�Tאل���� ��b�I� z�q ��� �.� ،� $Q$%� �H resizeable ��b�Iم a�M�� �.� ، FormBorderStyle���

FixedDialog z�OI����.� ، MinimizeBox و MaximizeBox...� ن'PQ��7Q�1 ��G��C���FVא\�����lWg� �hא�QHא'Lא .� �

��FV����.و א�ن�C�Hא'� ��،��Uא��0��3�'�d��F��Hא'Lא\���0א Dialog ن�'PQ53א�$�א ���b�N א �2��Nوא

U��!��\א enumeration nF�\א DialogResult��� �� �: وא W�'�d��n�Dא ���7א �

Abort, Cancel, Ignore, No, None, OK, Retry, Yes� �

�F�7 ��aא ��Hא W�Q��$�אM OK אل���b�I�a�M� AcceptButton n�Dم�H'O� H��+\א�H� �. א �

���N ���a�����39��אMQא��b�+� � Cancel ��bא���$<���� CancelButton � �Hא'��0��3�iH'Vم��H'!�H�g&9 Dialog �3م�א�$+��� ShowDialog ^3�� �� �KPTא�� :� �

� � #C كود

newDialog.ShowDialog();

� � VB كود

newDialog.ShowDialog()

Page 336: خطوة بخطوة مع فيجوال بسيك دوت نت

336

iz�7א ��%�r��N�5و{��א�P �א ���7א ND��{�N:�و3��!��א�ز��H و�� �KPTא����Nد�א��ص��'P �א�G�PN��،�lH���Iא

���Kא\^�ل��n�D :� �� �

#C كودif (newDialog.ShowDialog() == DialogResult.Cancel) { // do something } else if (newDialog.ShowDialog() == DialogResult.Ok) { // do something else }

� � VB كود

If newDialog.ShowDialog() = DialogResult.Cancel Then ' do something ElseIf newDialog.ShowDialog() = DialogResult.Ok Then ' do something else End If�

�.�א�h�Q'�)�izאل �N ��و�' �����oQא ���7א\P�� ��'�1'ن Dialog و �N��D� �א3� public �KQ$���� ^3��.� Wא� ، �0��3KPTא���*N � �� �: א �

� � #C كود

public System.Windows.Forms.TextBox TextBox1;

� � VB كود

Public TextBox1 As System.Windows.Forms.TextBox

7.1. MessageBox

a��9ع�א'N � �Kj��H�'S MessageBoxא �Dialogs �QWR وא���53�Kgאل א�� �KPTא���a�א����g�H'b�، :� �

#C كودMessageBox.Show("Welcome ...");

� � VB كود

Page 337: خطوة بخطوة مع فيجوال بسيك دوت نت

337

MessageBox.Show("Welcome ...")

� �� �$א��k��H�5אP>�t ��Z�3Hא�hא '�3����%��!��א Show �$`��20 overloads��]���PR� ��א������،

YNض�א�����N��،��Q�QWR� : ���j��H�U�KP, �NS��gN3א

-��Q�QW��� ��H�H�g&��3 א�� :

� � #C كود

MessageBox.Show("Welcome ...","Title",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);

� � VB كود

MessageBox.Show("Welcome ...","Title",MessageBoxButtons.OK,MessageBoxIcon.Exclamation)

�g(\א :

� � -�K�%�03�،�h9���i$D�Y��¤§��Q�QW��� ��H�H�g&א ��sאZ!א��gN3�$���: وא �� �

#C كودDialogResult reslt = MessageBox.Show("Do you want to save", "Title", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation,MessageBoxDefaultButton.Button1); if (reslt = DialogResult.Yes) MessageBox.Show("you want to save."); else if (reslt = DialogResult.No) MessageBox.Show("you don't want to save."); else if (reslt = DialogResult.Cancel) MessageBox.Show("you cancel this operation.");

Page 338: خطوة بخطوة مع فيجوال بسيك دوت نت

338

� � VB كود

Dim reslt As DialogResult = MessageBox.Show("Do you want to save", "Title", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1) If reslt = DialogResult.Yes Then MessageBox.Show("you want to save.") ElseIf reslt = DialogResult.No Then MessageBox.Show("you don't want to save.") ElseIf reslt = DialogResult.Cancel Then MessageBox.Show("you cancel this operation.") End If

� �،�A�IC�hאH���Iא�i$D�¤�NS �i$D��3�o�3�H�g&א�� ������...aא�� � א��،�<��NPא����אI�53����B��gs ل�WSא�א �

� � رابط

http://msdn.microsoft.com/en-us/libr...ebox.show.aspx

� �

7.2. lsDialogs Contro

53�a�ع�א��'N ��n�Dא �N!��אن���$�� ���O��������n�Dא�ن��Hو$ �،�%��zא �Sz�Tא����O��� �NF��و���QHא'Lא�h����\א�... א\�����hאL'א��QHא�������א\'%'د�5Fs�iא�دوאh א��+$אم �

7.3. gColor Dialo

3�iH'V^ و�TNN[�א�ن�ToolBox 9�^3 ن�،�.�����s!�:��53אل�0��3א�H���Iא� 'א���Oن�א��' ��q� ��1��� :

Page 339: خطوة بخطوة مع فيجوال بسيك دوت نت

339

CiH'b�os picturebox وG��3وא��C�Hز � �� �: !�:�א���3א �� �

#C كودif (colorDialog1.ShowDialog() == DialogResult.OK) pictureBox1.BackColor = colorDialog1.Color; else MessageBox.Show("cancel operation");

� � VB كود

If colorDialog1.ShowDialog() = DialogResult.OK Then pictureBox1.BackColor = colorDialog1.Color Else MessageBox.Show("cancel operation") End If

� �

*j�Vא������¤�NS K^3א��9+$אم����j�,����gNP وא AllowFullOpen t א�0��3�U���!�s9אL'אWS�Hא�

^3�� �� ��������7 �KPTא �א9 'אن�א��H���I+$م��53א���0א\N3�0�1��� :

Page 340: خطوة بخطوة مع فيجوال بسيك دوت نت

340

� �

��bوא�� fullopen �S�g(��t ��3^ א�� �KPTא���i�,��3�K3�P �� :

�: Hא��PQ�3�53����VO��aو�'!� �� �

رابط http://msdn.microsoft.com/en-us/library/ms646375.aspx

Page 341: خطوة بخطوة مع فيجوال بسيك دوت نت

341

� �

7.4. Font Dialog

KF�7'م�א�ن��N��،א�1'ط��H���I9م�$+��Q *��0��3�aI��q� : 3^�ل�

� �

#C كودfontDialog1.ShowColor = true; fontDialog1.Font = textBox1.Font; fontDialog1.Color = textBox1.ForeColor; if (fontDialog1.ShowDialog() == DialogResult.OK) { textBox1.Font = fontDialog1.Font; textBox1.ForeColor = fontDialog1.Color; }

� � VB كود

fontDialog1.ShowColor = True fontDialog1.Font = textBox1.Font fontDialog1.Color = textBox1.ForeColor If fontDialog1.ShowDialog() = DialogResult.OK Then textBox1.Font = fontDialog1.Font textBox1.ForeColor = fontDialog1.Color End If

Page 342: خطوة بخطوة مع فيجوال بسيك دوت نت

342

�: Hא��PQ�3�53����VO��aو�'!� �

� � رابط

http://msdn.microsoft.com/en-us/library/system.windows.forms.fontdialog(VS.80).aspx

7.5. Open And Save Dialogs

YD'���g,א $Q$�و�C�h�O�\א���!����FD�$Q$R� ��g3א��+$א���Q�iد�� �P3ن����g(O �53א\�����hאL'א�U�،��QHא

I� 53� ��7'م a���� �3^�ل KF��� ��7N'م �א:، ،� �V�� o�3� ��O��53و� :��D� KQ$�� :(O�� �� :

*��0��3�osא ��b�I�K�%وא�a��� Multiline=True 7��5'م א½�ICو�،���O� ��Iو��ªOR� �Hز�os�، �!�s��

OpenFileDialogو� SaveFileDialog i�,���. �I�53��gO�MN��K ل�א P'د�3 �

�S��NQ$ ����FDول�C ��53و���VN �Q$R$�א\��h�Oא�Hא'Lא��+$אم�א\���0א�gN3�$��: ��א�H���Iوא �� �

#C كودstring fileToOpen=""; OpenFileDialog openFile = new OpenFileDialog(); openFile.DefaultExt = "txt"; openFile.Filter = "Word documents (*.txt)|*.txt"; if (openFile.ShowDialog() == DialogResult.OK) fileToOpen = openFile.FileName;

� � VB كود

Dim fileToOpen As String = "" Dim openFile As New OpenFileDialog() openFile.DefaultExt = "txt" openFile.Filter = "Word documents (*.txt)|*.txt" If openFile.ShowDialog() = DialogResult.OK Then fileToOpen = openFile.FileName End If

H��3��NQ$ ���b7� א�ن�א�����S�NF�����7Q�1��*��0��3�U�:��Q'�)�0sو����F�7'م��N��،�q�3�U�o�\א :� �

� � #C كود

if (fileToOpen != "") { using (System.IO.StreamReader s1 =

Page 343: خطوة بخطوة مع فيجوال بسيك دوت نت

343

System.IO.File.OpenText(fileToOpen)) { string input = null; textBox1.Text = ""; while ((input = s1.ReadLine()) != null) { textBox1.Text += input; }� } }

� � VB كود

If fileToOpen <> "" Then Using s1 As System.IO.StreamReader = System.IO.File.OpenText(fileToOpen) Dim input As String = Nothing textBox1.Text = "" While (input = s1.ReadLine()) IsNot Nothing textBox1.Text += input End While End Using End If

� �Hא'� �Q$R$�א\�Pن�א W��'د�!�:���ªOא\�o א�ن��N��+$م��0��3�ªOLא :� �

� � #C كود

string fileToSave = ""; SaveFileDialog saveFileDialog1 = new SaveFileDialog(); saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; if (saveFileDialog1.ShowDialog() == DialogResult.OK) fileToSave = saveFileDialog1.FileName;

� � VB كود

Dim fileToSave As String = "" Dim saveFileDialog1 As New SaveFileDialog() saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*" If saveFileDialog1.ShowDialog() = DialogResult.OK Then fileToSave = saveFileDialog1.FileName End If

� ������F7��،و������NF lH���I+$م�����م�א\�.�W �: �7'م��ªOrא\��oא �U��VNא\���Hא �

� �

Page 344: خطوة بخطوة مع فيجوال بسيك دوت نت

344

#C كودif (fileToSave!="") { using (System.IO.StreamWriter w1 = System.IO.File.CreateText(fileToSave)) { w1.WriteLine(textBox1.Text); } }�

� � VB كود

If fileToSave <> "" Then Using w1 As System.IO.StreamWriter = System.IO.File.CreateText(fileToSave) w1.WriteLine(textBox1.Text) End Using End If�

� ��:א P���2��N'ن�,�WS�K^3��Jא� �

�NP>�،�YNj�P P �א���!�s9א�*j�Vא������¤�NS �NS��FgND�$Q�\א�n�Dא�9 ع� :� �� �

� �

Page 345: خطوة بخطوة مع فيجوال بسيك دوت نت

345

رابط

http://msdn.microsoft.com/en-us/library/aa287592(VS.71).aspx http://msdn.microsoft.com/en-us/library/system.windows.forms.savefiledialog.aspx�

a7!�o�\א���א¡�$�אو�א���א�izאو�.�א�h�O�\ع��53א'��$Q$���NP>���� ���O� �o�3�53��^�C�$Q$��،�...�. א� �

.67. print Dialog

� �

،��D��1 ���PQ�3�53و�'!� Q��+$م� ������FD�*j�VI�U��PRא�� �: <�5Pאن��OQ$¤�א �א��aא �

رابط

http://msdn.microsoft.com/en-us/library/system.windows.forms.printdialog.aspx

� �

أحداث الماوس .8

Page 346: خطوة بخطوة مع فيجوال بسيك دوت نت

346

����GSWN� MouseDown 53 PropertiesאC E$Lو�9\��!��א ��Hא\qM'ط��53א\�وس�،

� �� �: و�G�P�����53א P'د�א �� �� �

#C كودif (e.Button == MouseButtons.Left) MessageBox.Show("Left click"); if (e.Button == MouseButtons.Right) MessageBox.Show("Right click"); if (e.Button == MouseButtons.Middle) MessageBox.Show("Middle click");

� � VB كود

If e.Button = MouseButtons.Left Then MessageBox.Show("Left click") End If If e.Button = MouseButtons.Right Then MessageBox.Show("Right click") End If If e.Button = MouseButtons.Middle Then MessageBox.Show("Middle click") End If

Page 347: خطوة بخطوة مع فيجوال بسيك دوت نت

347

�>�t �$E و\��!��א ��17Nא�U� ^3א\�وس���g��D MouseMove :�� �

� � #C كود

this.Text = "X: " + e.X + ", Y:" + e.Y;

� � VB كود

Me.Text = "X: " + e.X + ", Y:" + e.Y

� �

أحداث الكيبورد .9

E$Lא�iz�7א �U� ^3�� �� �$Eא��ص��� ��Hא\qM'ط���G�Pא���3א key_up :� �

� � #C كود

this.Text="key: " + e.KeyCode.ToString();

� � VB كود

Me.Text = "key: " + e.KeyCode.ToString()

� ��3� �!��\�5P �א�ول�U و H� �א 0MN�� ،�� �Lא� H� �א 03� �qM3'ط�3^ �I�� Hز�¤�NSن���� وא ^����key U �ذא

Modifier�� �� �KPTא�� :� �� �

#C كودthis.Text = string.Format("Key: {0} Modifier: {1}",e.KeyCode.ToString(), e.Modifiers.ToString());

Page 348: خطوة بخطوة مع فيجوال بسيك دوت نت

348

� � VB كود

Me.Text = String.Format("Key: {0} Modifier: {1}", e.KeyCode.ToString(), e.Modifiers.ToString())

���P3אن����¤H��I9��D�9��دא���... و���W�ON���א �IF �g��D�z�N��h���F .�א�izא��$א�����E+$אم � �� �� � � �� �

� �� �� �� �� �� �

� �� �� �� �� �

Page 349: خطوة بخطوة مع فيجوال بسيك دوت نت

349

� �� �� �� �� �� �� �� �� �� �� �� �� �

GDI+

� � � �� �� �� �� �� �� �� �� �

الباب

15

Page 350: خطوة بخطوة مع فيجوال بسيك دوت نت

350

� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �

Page 351: خطوة بخطوة مع فيجوال بسيك دوت نت

351

GDI+مقدمة إلى .1

JO �א �א�وא�3 lWS� 0���� System.Drawing � � � و�'!� h�3'�H� K%א� 53� KM!א� 9'��2D م�H'O �א n�Dn�D�'���،�:! Iو������� �� وא\+�h�11א�� �: א �h�JOא ��j����א �

� �1. System.Drawing�: n�D�'���،�����j� א�. م�وא �Oش�א������9א ��t���h���FD�U��g3$+ א ��JOא

��� �. א �2. System.Drawing.Drawing2D�� :53�A�IC��D'F7$م��� K^3���� א $وאل�א ��t���n�D�¤$Dא

gradient brushesو� geometric transforms � �3. System.Drawing.Imaging� :� �W�ONو�� ���Iא$ ������hא �א izو.�א� H'V ����n�D������FD�U�¤$Dא

�O��+\א�h���F� �. א �4. System.Drawing.Printing:� ����h�3'�H�KQ'��n�D�¤$D�����D�1 1����Dوא ����03�K3א� �H'b .� �5. System.Drawing.Tex:� :! I�03���3א�1'ط�و'�H�iH'V��K3��� . א

Drawing . Systemمحتويات الفئة .2� �

�: وא��^��א��+$א��S �S��g��Q'�)��SC،��3א ��JOא�����9 �� �

�VN� �א �ob' �א �Bitmap� �iH'V 9��'א�h�3'��3�zא� �Brush� �'�� �����Fא�i�,�!א�'אع�i$D��k�5،�وQ� �

BufferedGraphics� ��NP> אل� �WSא ��Buffer ��N7 ����+$אم �����+$אم ��� double א

buffering� �Color� �SystemColors5Q'�� �א� 'אن�א �5P>�tא��+$א�h���FD�U��g3א ����وא �Font FontFamily� ص'VN . א�1'ط�א �5P>�tא��+$א���H�h���FD�U��g3א

Graphics א t 9��5j�P �7א�h���FD�U�����9א ����،�وא��g��D�f���N�

Icon SystemIcons �h��'7Q9�03א�K3��� א

Image אل abstract class H'V �h���F�������Q��3�KPא

ImageAnimator 03�K3���� ���R�\א�H'V א

Page 352: خطوة بخطوة مع فيجوال بسيك دوت نت

352

Pen אع'�C�i$D�: ��h���Fא ����،�و���.

Point א��$� �����03�K3א9h�� �Rectangle K�1��3� �

Size KPT� �������Xא\��� �StringFormat �WS�'�l��JO ����h���Fא VN'ص ��Q��3�K��n�D���א �

Region א$%�i$�O3�*j�VI�i$D�: �. �Iص��� ����03�K3א�P,9ل�C������،�و �

double buffering: � �

�F�����N7���S Uل��F��9������� buffer F� �lH'g&����K7��3��PT3�U � �i$�،� flicker ��+$م��i�3وא�NS�53��g��D�f��� �: �n�Dא �F'م��h��N7��U�iH'gT3���N7���Sא ����<�5Pא �

� � رابط

http://msdn.microsoft.com/en-us/library/b367a457.aspx

��F�3��NP>5D�$Q�\א��!�� aא�� �: I�53��g��Q'�)�0�B ل�WSא�א �� �

رابط

http://msdn.microsoft.com/en-us/library/system.drawing.aspx

� �

Graphics الفئة.3� �5j�P �: <�5Pא����i$���lz�Tق �א����������FD�Uא ����،S'�א Graphics 5j�P א �

'���ن��53א H'Oم�،��−�C$��: وpicture box :! I 53و�O@�א\ �� �

#C كودGraphics myGraphic = Form1.CreateGraphics();

� � VB كود

Dim myGraphic As Graphics = Form1.CreateGraphics()

� �-�'O ���iאدא������ ����Q���5D�،� ^3 PaintEventArgs ^3א 5j�P مCHو��53�$�Eא�� �KPTא�� :� �

Page 353: خطوة بخطوة مع فيجوال بسيك دوت نت

353

� � #C كود

private void Form1_Paint(object sender, PaintEventArgs e) { Graphics myGraphic = e.Graphics(); }

� � VB كود

Private Sub Form1_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) Dim myGraphic As Graphics = e.Graphics() End Sub

� � ���lWSא ��JOو��'�� �: ��n�Dא�وא��3א �

� ��VN� �א �ob' �א �

FromHdc()� �FromHwnd()� �FromImage()� �

�� ���i3'%'د�iH'b�53���H�5j���KFD� �

Clear()� �h�Q'�)���3 5j�P �א �DrawArc() iH'b���H P,אو���$NS�K

DrawBeziers() ��H Beziers - h��NRN3�������gNP . - ��S�N�3�f�DC�9و

DrawCurve() nNRN3���H

DrawEllipse() و�M���KP,���H

DrawIcon() ��'7Qא���H

DrawLine() ��H ��7��3�aI

DrawLines() ��H �53א�1'ط��D'F�� �DrawPie() ������a1����H� �

DrawPath() H��3���H� �DrawRectangle() K�1��3���H� �

DrawRectangles() h �1��3���H� �DrawString() *����H� �

FillEllipse() و�M���KP,�5Q'��� �FillPie() �������a1��5Q'�� �

Page 354: خطوة بخطوة مع فيجوال بسيك دوت نت

354

FillPolygon() �5Q'��0�M3� �FillRectangle() 0��3�5Q'��� �

FillPath() H��3�5Q'��� �

53�$Q�\ �kودوא��JO �'ل��lWSא�h�3'��\א :� �� �

رابط

http://msdn.microsoft.com/en-us/library/system.drawing.graphics_members.aspx

��� 9�)��Cن��0�Bدوאل�א���� ���3Cدوאل�א ��'Pen 5Q ���+$م�א DrawXXX ��7 وא�ن� ، FillXXX ��g!i�,�O ����5QWS�n�D�fא C�YNj�PوBrush 9 ���+$م�א���C$�Nא��W ، .� �

4. Pen

5P> א��+$אم Pen ���Q���5D�i�,��3���� ����7א�زHق��h���FD�UK^3�$Q$ Pen.Blueא ��N�C�9��،�:! Iو:Vj�VI�53�iد�O��9وא�:N3�5j���oQ����n�D�5QHد�.��N ��3^ ��3ز�� �KPTא���iא\��$د :� �

� � #C كود

Pen myPen = new Pen(Color.Black, 3);

� � VB كود

Dim myPen As New Pen(Color.Black, 3)

��Cن�'�����.�z�T���� �NF.�����א��+$אم�א\�Q$�3.�53'د�و���ض� �NNP> � ^3�$Q$���Q���5D���7� �*j�Vא�

�Qא$� �: ,��17��KPא �� �

#C كودmyPen.StartCap = LineCap.ArrowAnchor;

� � VB كود

myPen.StartCap = LineCap.ArrowAnchor

� ���7 ��: \��!��א\�j�VI�5D�$Q*�א �

Page 355: خطوة بخطوة مع فيجوال بسيك دوت نت

355

� � رابط

http://msdn.microsoft.com/en-us/library/system.drawing.pen.aspx

5. Brush

@ON� � �� �'ن�א��]���Ob�3�a^�ل��� �KPTא���i�,�!�z�T�5א�P>�،��7Q�1 �: א � #C كود

SolidBrush myBrush = new SolidBrush (Color.Yellow);

� � VB كود

Dim myBrush As New SolidBrush(Color.Yellow)

� ���MQ�5אP>� ^3�� �� �53 'ن��� �KPTא��^�]��i�,�!�z�T� :� �

#C كودHatchBrush myBrush =new HatchBrush(HatchStyle.BackwardDiagonal, Color.Green, Color.White);

� � VB كود

Dim myBrush As New HatchBrush(HatchStyle.BackwardDiagonal, Color.Green, Color.White)

i�,�O �: \��!��א\�j�VI�5D�$Q*�א �� �

رابط

http://msdn.microsoft.com/en-us/library/system.drawing.brush.aspx

Page 356: خطوة بخطوة مع فيجوال بسيك دوت نت

356

الرسم .6

،����� ��3^ ��$�אن�א���NNj�����]Tא��ص��� �����7 �KPTא��3�aI���H�U�z$� �: <��NNPא �� �

#C كودmyGraphic.DrawLine(Pens.Blue, 20, 20, 100, 100);

� � VB كود

myGraphic.DrawLine(Pens.Blue, 20, 20, 100, 100)

� �K�1��3و�C :

� � #C كود

myGraphic.DrawRectangle(Pens.Blue, New Rectangle(20, 20, 100, 100));

� � VB كود

myGraphic.DrawRectangle(Pens.Blue, New Rectangle(20, 20, 100, 100))

� �nNRN3���Hو�C :

� � #C كود

myGraphic.DrawBezier(Pens.Blue, 10, 20, 50, 80, 10, 80, 100, 50);

� � VB كود

myGraphic.DrawBezier(Pens.Blue, 10, 20, 50, 80, 10, 80, 100, 50)

l$Q$�و�:OQ����������.�5j�����5+$אم���P ��3�aI���H��N��P3�� ^3�����7و�� �KPTא���a7N3�:�]� :� �� �

#C كودGraphics myGraphic = e.Graphics; Pen myPen = new Pen(Color.Blue, 3); myPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot; myGraphic.DrawLine(myPen, 20, 20, 100, 100);

� � VB كود

Dim myGraphic As Graphics = e.Graphics

Page 357: خطوة بخطوة مع فيجوال بسيك دوت نت

357

Dim myPen As New Pen(Color.Blue, 3) myPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot myGraphic.DrawLine(myPen, 20, 20, 100, 100)

� �C ^3���^3�KP,�n�D1'ط�I�i$D�53�H��3���� �: و� �

#C كودGraphicsPath myGraphicPath = new GraphicsPath(); myGraphicPath.StartFigure(); myGraphicPath.AddLine(10, 10, 30, 60); myGraphicPath.AddLine(30, 60, 60, 10); myGraphicPath.AddLine(60, 10, 10, 10); myGraphicPath.CloseFigure(); myGraphic.DrawPath(myPen, myGraphicPath);

� � VB كود

Dim myGraphicPath As New GraphicsPath() myGraphicPath.StartFigure() myGraphicPath.AddLine(10, 10, 30, 60) myGraphicPath.AddLine(30, 60, 60, 10) myGraphicPath.AddLine(60, 10, 10, 10) myGraphicPath.CloseFigure() myGraphic.DrawPath(myPen, myGraphicPath)

� � �P'ن�I��1א�� �אq����'�3�:�� �� ��Q�e�03א C FillPath i�,�Oو���N\א

� �

رسم النصوص .7

�'Sص�'VN � . GDI�����D�53��I_�אل���Hא�� �����*���i�,�O"�א�zو��'ن� �C�3�a^�ل�S�:��D'�א P'د�א��17N . �200و��U��"C200א

� � #C كود

myGraphic.DrawString("Hello GDI+", new Font("Times New Roman", 30), Brushes.Red, 200, 200);

� � VB كود

myGraphic.DrawString("Hello GDI+", new Font("Times New Roman", 30), Brushes.Red, 200, 200)

Page 358: خطوة بخطوة مع فيجوال بسيك دوت نت

358

�� �7�9��VQ5j�P ���iH'V وא��N��P3��� StringFormat ���:�!�sא��+$אم�א �V�� ^3�������P �،���� א�hאq�3�Qد'FD :� �

� � #C كود

Graphics myGraphic = e.Graphics; StringFormat drawFormat = new StringFormat(); drawFormat.FormatFlags = StringFormatFlags.DirectionVertical; myGraphic.DrawString("Hello GDI+", new Font("Times New Roman", 30), Brushes.Red, 100, 20, drawFormat);

� � VB كود

Dim myGraphic As Graphics = e.Graphics Dim drawFormat As New StringFormat() drawFormat.FormatFlags = StringFormatFlags.DirectionVertical myGraphic.DrawString("Hello GDI+", New Font("Times New Roman", 30), Brushes.Red, 100, 20, drawFormat)

� �

: ��P'ن�א WS�K^3��J�,�2��Nא

�7�� ���� א���Iא $Hس�{^�ل�%�$� �P'ن��1�'Sو�aא�� $��NQ،�א\^�ل�3'%'د�WS�n�Dא�א�h��3'�� �n�DدHوس�אKPT ����D�� � �� : א

Page 359: خطوة بخطوة مع فيجوال بسيك دوت نت

359

�: Hא��aא\^�ل �� �

رابط

http://www.java2s.com/Tutorial/CSharp/0480__2D/Clockanimation.htm

�%$א��D�U_�אل^P <��NPא���9אدN3�i:�א ��Q�1!�:�،� �9وC�n�D���sول�nTICא��c_�א���NS GDI ��01¤�א��NS�53.� �

� � رابط

http://msdn.microsoft.com/en-us/library/ms533798(VS.85).aspx

Page 360: خطوة بخطوة مع فيجوال بسيك دوت نت

360

� � � �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �

Page 361: خطوة بخطوة مع فيجوال بسيك دوت نت

361

� �� �� �� �� �� �� �� �� �� �� �� �� �

Windows Presentation Foundation

� �� �� �� �� �� �� �� �� �� �� �� �

الباب

16

Page 362: خطوة بخطوة مع فيجوال بسيك دوت نت

362

Page 363: خطوة بخطوة مع فيجوال بسيك دوت نت

363

أساسيةتعريفات .1

1.1. WPF

Windows Presentation Foundation������ �אH�V�Iא f��Q� �3� �C WPF �S �53و i$Q$%� ��3'�H� ��N7�03� hC$�� ��PQ�3 .net framework 3.0 f��Qو�'!� �3� n�D� $F��� ���� Extensible Application

Markup Language������ ����XAML 4 وאH�V�Iא �Sو� ، �U� ��PQ�3و�'!� h��N7�� 53� $Q$א�� Kא��$�����j�\א�h�g%א' �Windows Media Player API's و DirectX APIs و +GDI و Windows Forms א

�'א%�h�gوא ��'���j�N��h�3و� ��� G��Z �. א����د�وא �n�D�'Q$�Oא �

03� �3C WPF $7! ��FV� ��� z�gوא���h�g%א' �א ��FV��53� z�7ط�א��$אN �א lWS�0�F´��PR� ���������P3אbא

�k I�53�'Q$�O �. א ^ ���א����د�وא �

1.2. XAML

f$g� XAML ��3���iH'V����FV� ������$ ����F�^3 ASP.netن�h�ROb�U�E$d ���א �Y��KVOא P'د�وא�،

XAML�X��g��, HTML 3$:� ���FVא+����W ����ROb–ق�H�O ����Cن�אل–��03א� XAML م��(�����X�.Cn�D�'�d�������4 �h�qא �*j�VIو�h�J!�...א� .� �

� �

1.3. Microsoft Expression

،�h��3'�� ���h���FD�53��D'F��5D�iHאD���FV� �U��3��7Q�1���gOQ������Qא �O`'אل���'د�U�،�'Q ���7��،���ن�א��Y��Q�R� �23�����U�H'bد����K( K^3�H'V �Adobe Flash و�photoshop K^3�23�����U�A�IC��7Q�1 א

..��Q$ � �אن �א ��K�§ ��Q'1א�ن �J���U� �gFg!�5P>� iH'V��h�3'�� �א 2�NQ�h��3'�� �����U�*V+�3�23א�b؟ א������ �

Page 364: خطوة بخطوة مع فيجوال بسيك دوت نت

364

i�P!��S�lWS����� Expression 4��������، V� ���Fא ^����وא\��R¤�وI !:�،�و ���5Pא�U��VV+�3�23אn�Dن�'PQن�C�5P>�2��N � KP, XAML א'g����O��+\����7א��1��U�:3�5א��+$אP> .� �

�3'�� �'�GQو��gN3א�*V+\א��gN3�234א O ش� �i$D�¤�NSאb$אHא�lWS�53�hא���:��T �X','�'Oאو�א���:��T .�א

0s�5P ���n�D��N�FD�iZ!������¤Hאل WS�v�,�U�0�'����NNPא�א �23��4،�و�Dא�U�23��4 ���� WS WPFא�א :� א W �5P> XAMLא���ج I�53�:3$+���.� �

�$�D�z_�אلN �$אQ����3$73�lWS����� WPF �Q���%$א�،��N�'د� . �53א

� �

WPF أنواع تطبيقات .2

���1� WPF ،�KP,�53��^�C�n�D��g(Q�5אن�P>�K��،�a7!�$��7����� �@���د��1n�D�f��� �RN�� �lWSول�א�. א�,�Pل�א�ن �

1- Traditional Desktop Applications:

$��7�����1��،��D'�,��^ع�א��'N ��7 �R�WPF Y ،�אل exe אQد����� :! Iو�h�g%א' �. א\)��gوא � 2 - Navigation-Based:

��7 �P'ن��1�����Dد I�53��NP> WPF ل��1��H���Iא VI�:Q$ �5P $�Qو��OV�\א�*j� Forward و Backward 5P>���� U���C��Sد$��h�ROb�Y��K7N� �F��+$م�א pages �g�'��U�$Q$%�9�، ����1�

�OV� 3�$¨�א�A'��د�D .� � 3 - XBAP Applications:

h����53א�i$Q$%�i��3 WPF ل I�53�KF�Q����1��z�N� �$�Cאل }� ��:�%$א,�،��OV�\א JAVA Applet �،�������Qא 'b'ل�� �:�I�53 ل�ND'אن URL K�FR7'م���Q�، XBAP application אل�U local machine

�g��qT7'م���Qو .� � 4 - Silverlight Application:

�I ل 53 WPF 53� �g�!�Mא��� ��Q� h�7��1�� z�N�� �NP>� �MQא X� :�T �א i$Q$,� ،� i�,��3� �OV�\א� I ل

Page 365: خطوة بخطوة مع فيجوال بسيك دوت نت

365

embeded flash b�Uא\'%'د���Zא���h�RO �0אل�F�Q�،��O��+\א Silverlight ��g(\א�U���N��h����P3��zא'��$��n�D�W�ON� �. وא �

� �

WPF محتويات الفئة .3

System.Windows:� K ��. WPF א ���b�Nא������� �System.Windows.Controls:� z�N� 1���K^3��7א 7'א��jوאل ��'��53��D'F��n�Dא ���b�Nא ز��3� Tool

Tips�:! Iو .� �System.Windows.Markup:� h�JO ��. XAML א����gO���bو��b�W�ON£ א �

System.Windows.Media:� K3��� ����bא���h�JO ��. �033Dא Q$�O'�وא �H'Vא\�����Rوא ����3�V א �System.Windows.Navigation: h�JO �א N'ع א 03� K3��� ��� �bא�� Navigation-Based��h�7��1� �א 53

�7����l�NRsو�W �. א �System.Windows.Shapes:� 'F����3�V� ��h���Fא�h�53א�دوא��D2D.�� �

� �

WPF عالم تطبيقك األول في .4

h�7��1��z�N�� �NNP> WPF ون$� n�Dد��F�D9א XAML �z�N����O���i�,��3�����N �������N`�وز��lWSא\� �NNP �و ،h�7��1� WPF אم$+���� XAML .�� �

.��N��' 03�K3��� ��oVא\�����،�و\��S�lWS�5א\��iא�و�� ![�����P'ن�.$�א%��HTML h 7�������%�$��א

�����k!������$7אل�N �� HTML n�D�$F��� Tags ^3�� �� �KPTא�� :� �� �

كود<a href="Ahmed.html">Ahmed</a>

� ��

aא�H�c�Q����� ����א Link �ROV א P'د�אTQ Ahmed.html Y��Uאن� 'Sم�$+��F� א N*�א\��وض�

Ahmed .�� �

A�IC��7Q���¤�NS �9'אد�אل HTML ^3�� �� �KPTא�� :� �

Page 366: خطوة بخطوة مع فيجوال بسيك دوت نت

366

� � كود

<img src="ahmed.jpg" alt="ahmed picture" border="0" />

� ��gQ$ �iH'b�c�Qد�'P 9�)��!��@�WS ToolTip �kא�א�' �$ود�،���k�@� ��. �Tag��Q�g و �

�N��' �!��}�G���5D�$Q�\א� HTML �NS�53�z$� ���qא ������ <��NPא���:� �� �

رابط

http://www.html4arab.com/

� � مالحظة

���Q���h�3'��3ن�'P���+53��^א��WI]��5 �:F����U�Y�D���+�0.א\'א��Q'1��U�� ��P���+�n'ن��O3$א�%$א�03hאدوא� ��K^3 DreamWaver �א��+$אم �g��D� f��� �א KMO\א� 5F!����7��1��U� 'Qد'��� �א �O`'אل �−Cو

��V+, 03�0.א\'א������hz$� Notepad �a7!و.

��3�K��'Sא�WS�،��g\אz$�� �:� א�دوא�hא��Wg!�،��N���bא� ،��ON@�א �D�U� XAML o�b'��������7Q�1_���ج�� ^3��3C�Hز :� �

� � كود

<Button Height="80" Width="100"> ClickMe </Button>

� ��Iع�א�'N �: وWSא�א �

� � كود

<Button Height="80" Width="100" Content="ClickMe"/>

�: <�5Pאن�PQ'ن� $��NQز�d��3C�H'��$אWS�،�A�IC��b�ND�n�D���Iא�3^�ل �

كود<Button Height = "80" Width = "100"> <Button.Content> <ScrollBar Width = "75" Height = "40"/> </Button.Content> </Button>

Page 367: خطوة بخطوة مع فيجوال بسيك دوت نت

367

� �� �����53��7�T3א ��I Scroll �JO±��)�א��ن�אل �5Pא\^�ل�א ContentControl!� �

كود<ScrollBar Height = "80" Width = "100"> <Button Width = "75" Height = "40"/> </ScrollBar >

� �

لبدء من خالل فيجوال ستوديوا .5� �

���H���I����.�، New Project �.�، H���I�� WPF Applicationא�Visual Studio z�T א�ن�א!���� �KPTא�� :

ª� � XAML ,��אل,� .���'�0sز��3C�Hو9����،�*��0��3�� �n�D����Zא���zא����.�$Q$R� ���، :

Page 368: خطوة بخطوة مع فيجوال بسيك دوت نت

368

KF�م���.،�K�O ��b�ND��!�Pא H'Oم�وو��g�sدא�KIא �XAML �VN א���z�T'د ��`$�א�:����Fذ������� Window ��

Grid �MQد �}$،�א'�����������P3�����bא�ن�א�،���FV� ��א���U���!�s9א��b�N� א�F�D9د� אو XAML ����א�GQ' 1��03���h�7א�K�O���F����FV� ��. - ��ن���2343��Nو�n�D−GQא �

*j�VI�U�KQ$�� �RN� Windowول�א�ن�א�q� ��bא�����}��.� ����אذND Title ����GS'אن�א H'Oم�، ،��' �� "WPF Example"= وTitle G�P�����53 3��!��و7�����53'م���H���I �وא�$��Q�g�����P��Cא�� �KPTא��

^3 :

� �B9د�א'P P�� XAML KPT'ن�א�� � �� �: א �� �� �� �

Page 369: خطوة بخطوة مع فيجوال بسيك دوت نت

369

كود<Window x:Class="WpfApplication2.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="300" Width="300" Title="WPF Example"> <Grid> <Button Height="23" Margin="99,0,105,91" Name="button1" VerticalAlignment="Bottom" Click="button1_Click">Button</Button> <TextBox Height="23" Margin="77,80,81,0" Name="textBox1" VerticalAlignment="Top" /> </Grid> </Window>

� �N��hא�دوא�KP �*j�V�0א��B�U��PR� 9�7��ªאن�������P3אQ�1 �. O@�א �

،�Y��3��3א��Hز�n�D�aqM ����3C�������X�%א�ن� ��g�!�Gא���،���FV�� �t ���7 �P'د�������א��3�iW!���$`�� ^3�� �� �: א���3א �

#C كودprivate void button1_Click(object sender, RoutedEventArgs e) { textBox1.Text = "Welcome WPF"; }

� � VB كود

Private Sub button1_Click(ByVal sender As Object, ByVal e As RoutedEventArgs) textBox1.Text = "Welcome WPF" End Sub

2��N : وא

Page 370: خطوة بخطوة مع فيجوال بسيك دوت نت

370

��MQא�,�,�@O��Uد�'P � <��������NPא�� �KPTא�����FV� �: א �� �� �

كود<x:Code> <![CDATA[ void CodeExample(object sender, RoutedEventArgs e) { MessageBox.Show("ahmed"); } ]]> </x:Code>

� � ��Hא�Click �3 ��א $א ���n�Dא���9א W�א�U�:�ZIא�K�%�03E$Lא� ^3�� �� �KPTא�� :� �

� � كود

<Button Height="23" Margin="99,0,105,91" Name="button1" VerticalAlignment="Bottom" Click="CodeExample">Button</Button>

� ����ل�N ��... VB.net و�O@�א N)�م��� �

C�MQ �����z�N�CE$R� ��� Click ل I�53��NP> Visual Studio i�,��3�$Q$%�E$��z�Tא� ...� �� �

: - نقاط سريعة-خاتمة الجزء األول �3�5D��R��!��אل�-���N��' Syntax א��ص X XAML �NS�53�z$� �: ��'���NP>�0א �� �

رابط

http://msdn.microsoft.com/en-us/library/ms788723.aspx

�$א�Eאل�-Cد��F�D9 Form_Load ل��g�!�sא��NP>�:! Iو Window KPT �� ^3�� �� �: א �� �

كودLoaded="Window_Loaded" Closed="Window_Closed"

� �

Page 371: خطوة بخطوة مع فيجوال بسيك دوت نت

371

hא�دوא�K��*j�VIو�Eא$�C�0�B�03��3א��@Oو� .� �

-�03��7Q�1 '�א���lWg��hH�Fא WPF �PR� �5 '���B�$Q����Nل� ![�������1 ON���א\��53�$QאP �،��g(\��

03� z$� �א �NPF�!� :! Iو� h�g%א' ��Microsoft Expression Blend��D'F א 5Fs� 53 Microsoft

Expression ����j� �'א%��gא�iH'b�lWS�، ^3 :�

�...و��U��g��D�f���NدHوس�.�د��3 3��,�Visual Studio i אل <��NPوP����F�FV��2��� XAML U�:�s'ن �

Page 372: خطوة بخطوة مع فيجوال بسيك دوت نت

372

WPF واتأد .6

� ��!'��،��Q$��7� دوא�hא��!�sא WPF وC�،�i$Q$א��h�53א�دوא��D'F� �K%C�53��gא�H��Iو��S�g(3�53�q��k��3א��+$א .� �

�: ���D'Fא�دوא�hא �C�:�Q$��7و�9 �

�M��t �א iא\���د�hא9دوא� �D'F� Lable, Button �*j�Vא������� 0�F���a7!� ،� �Qد�� و��.��א�دوא�hאY��و�K�F`� ���!�sא� �g(\א .� �

�: Cدوא�hא H'Oم:������� �

:! Iو��Q�F� �. �K^3א 7'א��jوא,����א �

��^ ��: C mediaدوא�hאل:��� �h'V �. وא �iH'Vوא Q$�O'�وC�K^3 :! Iدوא�hא �

�: Cدوא�hא\)H�:�gא���� �

��. StackPanel و Canvas وPanel K^3�i$Q$%�A�IC وאل ���M� Groupbox���א9دوא�hא�K^3������9אل �

hدوאC�53��D'F���s'��iH'V �: א\+��WPF �O א �

� XAML و�'د�אل�� �KPTא����gא��ص�� :� �� �� �

Page 373: خطوة بخطوة مع فيجوال بسيك دوت نت

373

كود<Window x:Class="WpfApplication3.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="240" Width="343"> <Grid> <Button Name="btnPurchaseOptions" Margin="10.5,51,10.5,41"> <StackPanel> <StackPanel Orientation = "Horizontal"></StackPanel> </StackPanel> </Button> <Expander Name="helpExpander" Header="Help" Height="23" HorizontalAlignment="Left" Margin="70,70,0,0" VerticalAlignment="Top" Width="51.757"></Expander> <Expander Name="fileExpander" Header="File" Height="23" HorizontalAlignment="Left" Margin="22,70,0,0" VerticalAlignment="Top" Width="44.95"></Expander> <Slider Height="21" Margin="21.757,0,19,75" Name="slider1" VerticalAlignment="Bottom"> <Slider.BitmapEffect> <DropShadowBitmapEffect /> </Slider.BitmapEffect> </Slider> <ProgressBar Height="15" Margin="23,0,19,50" Name="progressBar1" VerticalAlignment="Bottom" Value="50" /> </Grid> </Window>

� �

: WPF أدوات نقاط سريعة حول

-��Qو�M�� ���Mو��Qوא $وא��jوEllipse : :! I א�,�Pل�א �Q$R$�א�,�Pل�א .� �

-��b�ND List و�אلC Combobox � �� �KPTא����gN3�KP ��O������O�Iن�و' �$Q$�ن��P39�����b3^ א :

Page 374: خطوة بخطوة مع فيجوال بسيك دوت نت

374

�����RV����b�I�K��O��5P> Spell Check ^3א�1[�-�� ��0��3*��� �KPTא�C�U :� �� �

كود<TextBox SpellCheck.IsEnabled="True" Height="23" Margin="20,44,16,0" Name="textBox1" VerticalAlignment="Top" Grid.Row="10" />

� �� �� �+1[�א\'%'د����������Q���5D'د��K^3א�Kjא$� �: و<3�5P��!��א �

#C كودstring alterWords = ""; SpellingError error = textBox1.GetSpellingError(0); if (error != null) { foreach (string s in error.Suggestions) { alterWords += s + "\n"; } MessageBox.Show("Alternative Words:\n" + alterWords); }

� � VB كود

Dim alterWords As String = "" Dim [error] As SpellingError = textBox1.GetSpellingError(0) If [error] IsNot Nothing Then For Each s As String In [error].Suggestions alterWords += s + "" & Chr(10) & "" Next MessageBox.Show("Alternative Words:" & Chr(10) & "" + alterWords) End If

Page 375: خطوة بخطوة مع فيجوال بسيك دوت نت

375

���2��N �:P'ن�,�WS�K^3��Jא�وא �� �

� �� �

Binding -Dataربط البيانات .7

3^ � ����، ��.�a���U WPF �7Q�1���b�ND���.�a�H�0�1אل�،�i�,��3 Slider �~ TextBox ��!�s7'م�����،�i�,��3 �!�a7א����  دא�iא\�אد��z �g1�Hא :� �

� � كود

DataContext = "{Binding ElementName=slider1}" Content = "{Binding Path=Value}"

� �

����'دVQ�� �� �� XAML � �� �KPTא���K3�P �: א �

كود<Slider Height="27" Margin="20,40,16,0" Name="slider1" VerticalAlignment="Top" /> <Label Height="28" DataContext = "{Binding ElementName=slider1}" Content = "{Binding Path=Value}" Margin="20,72,16,0" Name="label1" VerticalAlignment="Top" BorderThickness="0">

� �

Page 376: خطوة بخطوة مع فيجوال بسيك دوت نت

376

2��N : وא

� �� �

8. d2Wpf � ��_�� �A�IC�i�3د�'�Nא��h��3'�� �5P ��$�و ���lWS، �������gא\��U WPF �iאل����j�Nא,�h��N7��n�D�f���N�

U��g�3��N�3����t ��. WPF و �lWS�5Pא\�I�53�i ل +GDI א �

53�$� �� �$א��Q��'�H��Iא�hא �����n�Dوא�� �: א �h�JOא �

System.Windows.Shapes System.Windows.Media.Drawing

System.Windows.Media.Visual � �

Shapes الرسم باستخدام .8.1

�JO �$����C�3�a^�ل� ����3���0�B�07� System.Windows.Shapes ^3�K�1א�P,9ل����א��، :� �

كود<Rectangle Height="100" Width="200" Stroke="Red" StrokeThickness="2" Fill="Aqua" />

� �

Page 377: خطوة بخطوة مع فيجوال بسيك دوت نت

377

� �� : א P���2��N'ن��� �KPTא

�NP>��g�H��NP>�t ��Object Browser ^3 א 'b'ل�� ��Q���5D��g א�,�Pل�א�� �KPTא�� :

5P>�t ���F^�ل و<��NNPא ����n�D�fא�j�V*�א�� : אن�>$���S���gN3�KP,،�א �KPTא

Page 378: خطوة بخطوة مع فيجوال بسيك دوت نت

378

P>��F��3�� ��N Kא ����n�D�fא�j�V*�א shapes ^3��� �� : א\'%'د�U�iא �iH'Vא

� �

Pen خصائص القلم .8.2

oQ������Q ^3��� �� �iH'Vא�����H����FD�א�U+$م������7א\ �: א �� �

كود<Pen Thickness="10" LineJoin="Round" EndLineCap="Triangle" StartLineCap="Round" />

� �U�l�NF�����}��(�9�' ��:�%$א�, GDI+ .�� �

Brush خصائص الفرشاة .8.3

،����7��1��U��g3�5א��+$אP>ش��O �: �i$D�¤�NS �gN3א�'ع��53א �DrawingBrush�:د�D�5Q'�� .� �

ImageBrush�: iH'b�53�z�´�KPT �. ��'�53�z�%�5Qא �LinearGradientBrush�: ' ��1 �$�iאIج�H$نא� .� �

Page 379: خطوة بخطوة مع فيجوال بسيك دوت نت

379

RadialGradientBrush�: جH$� אن' �$�iא��jدא .� �SolidColorBrush�: a7!�$� �'ن�وא�i�,�! .� �

C�S��g��D3^�ل��a�� i�,�O �: ��'ن�وא�$�!Solid a7 א �� �

كود<Ellipse Height ="50" Width ="50"> <Ellipse.Fill> <SolidColorBrush Color ="Aqua"/> </Ellipse.Fill> </Ellipse>

��$Hج�א $א�j RadialGradientBrush 3^�ل�����+$אم :� �

كود<Ellipse Width ="75" HorizontalAlignment="Left" Margin="28,30,0,96"> <Ellipse.Fill> <RadialGradientBrush GradientOrigin="0.5,0.5" Center="0.5,0.5" RadiusX="0.5" RadiusY="0.5"> <GradientStop Color="Yellow" Offset="0" /> <GradientStop Color="Red" Offset="0.25" /> <GradientStop Color="Blue" Offset="0.75" /> <GradientStop Color="LimeGreen" Offset="1" /> </RadialGradientBrush> </Ellipse.Fill> </Ellipse>

� �1���iH'b�53�z�%��Dدא א�3^�ل�ICوKP,�KI :� �

� � كود

<Rectangle Height ="100" Width ="300"> <Rectangle.Fill> <ImageBrush> <ImageBrush.ImageSource> <BitmapImage UriSource ="pic.JPG"/> </ImageBrush.ImageSource> </ImageBrush> </Rectangle.Fill> </Rectangle>

O : �ش�א\+���PQ�3�0.'3�53�2����Oو�'!����9+$א�h�3א

Page 380: خطوة بخطوة مع فيجوال بسيك دوت نت

380

K�b�O� ��: وWSא�א �א��53�$Q�\�aא �� �

رابط

http://msdn.microsoft.com/en-us/library/aa970904.aspx

� �

Transformations ال .8.4

������ ���U�*j�Vא��lWSא�^��¤$�O�� ��NP>����א ���b�Nא\�����Rאو�א\�[���h I$}�iא\��+$م�،��S�Qل�و�$و�P,א���Q�� �!א\��و�h���F� �. وPD���gوI !:��53א �

�� $�U��NQא H'Oم �א\^�ل�א�iא\'%'د�h�53א�دوא��D'F��n�D�hא�]� ��: ���s'Q���א �

كود<Button Height="23" Margin="72,72,0,0" Name="button1" VerticalAlignment="Top" HorizontalAlignment="Left" Width="75">Button <Button.RenderTransform> <SkewTransform AngleX ="30" AngleY ="20"/> </Button.RenderTransform> </Button> <TextBox Margin="142,11,59,0" Name="textBox1" Height="23"

Page 381: خطوة بخطوة مع فيجوال بسيك دوت نت

381

VerticalAlignment="Top">Ahmed <TextBox.RenderTransform> <TransformGroup> <SkewTransform AngleX ="20" AngleY ="20"/> <RotateTransform Angle ="45"/> <SkewTransform AngleX ="5" AngleY ="20"/> </TransformGroup> </TextBox.RenderTransform> </TextBox>

� �

2��N� �iH'b�lWSو :

���1��aא�� ���n�D��O����H'Vא�,�K�B� KP%$אWS�n�D�WPFא�א�]�� :� �

� � رابط

http://www.codeproject.com/KB/WPF/TransformationsIntro.aspx

� ����1� : �iH'b�lWSא

Page 382: خطوة بخطوة مع فيجوال بسيك دوت نت

382

� �� �

WPF فيion Animatال .9

�א\����7 �وא $وאل *j�Vא�� �!��� �وאل �07 �Q�R� �א h���F�� Animation �JO �א ��

System.Windows.Media.Animation����� $j�VI�E ��53��k�$��9��Q* ،�א��iאدא���KV� :

From�� ،To � ،By : �17د��$����� Sو�،��Q�R� �א �g�!���Q�t �$א��Qوא ��Q�gNوא�����bא ����D�f���N:�א �3�'�7�9 ...� �

�MQא�¤�NS������: �S ،�אtimeline l�b�ND��S و�� �

� ��VN� �א �ob' �א �

AccelerationRatio, DecelerationRatio� ����Lא��D���U��PR�� � �AutoReverse� ����Lא�z�gא���$���o�+� �iد'�� � �

BeginTime This� �� �F�7 �א ،� ���Lא� l$��� C$��� W �א �.' ���0�cא

Page 383: خطوة بخطوة مع فيجوال بسيك دوت نت

383

�$�zא\��,�א � �Duration� ����Lא����FD��g.�q����t �א �iZOא �

FillBehavior, RepeatBehavior ��zא'�� ���Lא� z�gא��� $��� E$R��� ��3ذא $Q$:! Iو�C�iد�D9א� �

U�aא���`���q��،3^�ل� Label :�� �

� � #C كود

DoubleAnimation dblAnim = new DoubleAnimation(); dblAnim.From = 10; dblAnim.To = 30; label1.BeginAnimation(Label.FontSizeProperty, dblAnim);

� � VB كود

Dim dblAnim As New DoubleAnimation() dblAnim.From = 10 dblAnim.[To] = 30 label1.BeginAnimation(Label.FontSizeProperty, dblAnim)

: ��Qא����L$א

���Lא��Q�g� :

� �� �KPTא������Lא�i$3�$Q$��5P> ^3 :� �

Page 384: خطوة بخطوة مع فيجوال بسيك دوت نت

384

� � #C كود

dblAnim.Duration = new Duration(TimeSpan.FromSeconds(4)) ;

� � VB كود

dblAnim.Duration = new Duration(TimeSpan.FromSeconds(4))

� �

z�g��9א�$������Lא�@P� �: و �

#C كودdblAnim.AutoReverse = true;

� � VB كود

dblAnim.AutoReverse = true

� ��Dא�$Q$���NNP>وlz�gض���$�א���� �: د�iא �

� � #C كود

dblAnim.RepeatBehavior = RepeatBehavior.Forever;

� � VB كود

dblAnim.RepeatBehavior = RepeatBehavior.Forever

� ��h�3�0א�H9�:د��Dא\^�ل�אو�א�K����n�D�a7! :� �

� � #C كود

dblAnim.RepeatBehavior = new RepeatBehavior(4);

� � VB كود

dblAnim.RepeatBehavior = new RepeatBehavior(4)

� �

Page 385: خطوة بخطوة مع فيجوال بسيك دوت نت

385

XAML الحركة باستخدام .10

��WN3א �R)��א�و� �N7Oא�� �Fوس�H$ �א�:����P39ن��1����א��53א9وא�lWS�U��Q���5D��3א ،� XAML �5Dאو��Q�� 3^�ل��NQ$ � א P'د��'ن��lWS�0�Bא��5P>�*j�Vא 'b'ل�� ��53��gא P'د�وא �P@�،�א�ن�K�%ل�'

Buttonوس���\���:��D�aqM ��א���U�:�Oل��'���:7Q−X����53� Pro CSharp 2008'م��� $وHאن� �

كود<Button Name="myAnimatedButton" Width="120" Height = "40" RenderTransformOrigin="0.5,0.5" Content = "OK"> <Button.RenderTransform> <RotateTransform Angle="0"/> </Button.RenderTransform> <!-- The animation is triggered when the button is clicked --> <Button.Triggers> <EventTrigger RoutedEvent="Button.Click"> <BeginStoryboard> <Storyboard> <DoubleAnimationUsingKeyFrames Storyboard.TargetName="myAnimatedButton" Storyboard.TargetProperty= "(Button.RenderTransform).(RotateTransform.Angle)" Duration="0:0:2" FillBehavior="Stop"> <DoubleAnimationUsingKeyFrames.KeyFrames> <LinearDoubleKeyFrame Value="360" KeyTime="0:0:1" /> <DiscreteDoubleKeyFrame Value="180" KeyTime="0:0:1.5" /> </DoubleAnimationUsingKeyFrames.KeyFrames> </DoubleAnimationUsingKeyFrames> </Storyboard> </BeginStoryboard> </EventTrigger> </Button.Triggers> </Button>

� �

styles تعريف .11

وstyles ��D'F���S �����א '�f������N��GQאن� $f��Q��3��NQ �ذא����N.7�������%�$��א��'ع������53�א 1'ل ����3�3�nF^ �53א�j�V*��$د :! Iאن�و' ���5P>���r�$�ذ �� darkstyle وא ��ض�وא9 ،

U��g3א���אل א��+$א�����P��iאدא�א style a7! .� �

Page 386: خطوة بخطوة مع فيجوال بسيك دوت نت

386

�3�'Sא�WS אل�U��MQC�:� WPF KP ���ج���o�b'� 7��5'م��WS�K������Pא�אL`���53א��Nא�������3^ �ز�Hא3

��Cن� $�i$D��NQאزHאO���k��3C�H@�אل���U style oQ��7'م���Nא��W �، style ^3�� �� �KPTא�� :� �� �

كود<Window.Resources> <Style x:Key ="darkstyle"> <Setter Property ="Button.FontSize" Value ="15"/> <Setter Property ="Button.Background"> <Setter.Value> <LinearGradientBrush StartPoint="0,0" EndPoint="1,1"> <GradientStop Color="Black" Offset="0" /> <GradientStop Color="Blue" Offset="0.25" /> <GradientStop Color="Brown" Offset="1" /> </LinearGradientBrush> </Setter.Value> </Setter> </Style> </Window.Resources>

� �� �KPTא���oQ��� �: وא�ن� �KPز��OPQ��3C�Hא �

كود<Button Name="b1" Width = "100" Style ="{StaticResource darkstyle}" Content = "Button 1" HorizontalAlignment="Right" Margin="0,61,30,61" /> <Button Name="b2" Width = "100" Style ="{StaticResource darkstyle}" Content = "Button 2" HorizontalAlignment="Left" Margin="25,61,0,61" />

� �� : א P���2��N'ن��� �KPTא

Page 387: خطوة بخطوة مع فيجوال بسيك دوت نت

387

� �� �

style تغيير طبيعة ال .11.1

oQ�����NP>�q� ��VV��z��,אل �א�Uא\'%'د� style �:�!�:�' א\��+$م�،�3^ � �Q$R$�ز�Hא��3�`��א��aو9�o��� אل��qم����Q style � �� �KPTא���:�������OPQ�K��K3�P �� :� �

� � كود

<Button Name="b2" Width = "100" Style ="{StaticResource darkstyle}" Content = "Button 2" HorizontalAlignment="Left" Margin="25,61,0,61" FontSize="30" />

� �2��N : وא

من آخر Style اشتقاق .11.2

KF� style 53�lWIC���Q�$Q$% style �Q$. PT ���:OQ����������5P>� �� �: �Kא �� �

كود<Style x:Key ="darkredstyle" BasedOn = "{StaticResource darkstyle}">

Triggers باستخدام style تصميم .11.3

Page 388: خطوة بخطوة مع فيجوال بسيك دوت نت

388

��'��NP> Triggers 53 �*��0��3�5Qאل� ^F!� ،�l��3��3�E$r��1و�Hא\�وس�אو���iدא �h9���$Q$�

:��n�Dא �Q$R$ ��'ن'V��$ND�o���G�P�� style�� �� �KPTא�� :� �

كود<Window.Resources> <Style x:Key ="txtstyle" TargetType = "{x:Type TextBox}"> <Setter Property = "Background" Value = "White"/> <Style.Triggers> <Trigger Property = "IsFocused" Value = "True"> <Setter Property = "Background" Value = "Yellow"/> </Trigger> </Style.Triggers> </Style> </Window.Resources>

� �

$Q$R� : وא �2��N\���0א N*�א W���D:�א

: برمجيا

��53��D'F���g���Fj�7אل ،�אPro CSharp 2008�b�ND��!�s �3^�ل�7N3'ل�53 styles $Q$�����53و style

�S$�C�n�D�'�R� ��3^ ز�Hא��39�� �KPTא�� :� �� �

#C كودpublic partial class MainWindow : Window { public MainWindow() { InitializeComponent();

Page 389: خطوة بخطوة مع فيجوال بسيك دوت نت

389

// Add items to our list box. lstStyles.Items.Add("TiltStyle"); lstStyles.Items.Add("GreenStyle"); lstStyles.Items.Add("MouseOverStyle"); } protected void comboStyles_Changed(object sender, RoutedEventArgs args) { // Get the selected style name from the list box. System.Windows.Style currStyle = (System.Windows.Style) FindResource(lstStyles.SelectedValue); // Set the style of the button type. this.btnMouseOverStyle.Style = currStyle; } }�

� � VB كود

Public Partial Class MainWindow Inherits Window Public Sub New() InitializeComponent() ' Add items to our list box. lstStyles.Items.Add("TiltStyle") lstStyles.Items.Add("GreenStyle") lstStyles.Items.Add("MouseOverStyle") End Sub Protected Sub comboStyles_Changed(ByVal sender As Object, ByVal args As RoutedEventArgs) ' Get the selected style name from the list box. Dim currStyle As System.Windows.Style = DirectCast(FindResource(lstStyles.SelectedValue), System.Windows.Style) ' Set the style of the button type. Me.btnMouseOverStyle.Style = currStyle End Sub End Class

2��N : وא

Page 390: خطوة بخطوة مع فيجوال بسيك دوت نت

390

� �� �

Templates ال .12

�MQم�א$+��� Yو�� �gNق���H�O �و �5Pא ،�hא�دوא�*j�VI��q� styles K3�P ����q�0�1אن������� �gא� �����1 א��:Templates א������9  دא�lWS� ^3�،�iאل �

كود<Grid.Resources> <!-- A simple template for a round button for items in this grid --> <ControlTemplate x:Key ="roundButtonTemplate" TargetType ="{x:Type Button}"> <Grid> <Ellipse Name ="OuterRing" Width ="75" Height ="75" Fill ="DarkGreen"/> <Ellipse Name ="InnerRing" Width ="60" Height ="60" Fill ="MintCream"/> <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> </Grid> </ControlTemplate> </Grid.Resources>

� ^3��3C�H� ��S$Q$���NP>وא�ن� :� �

كود<Button Name ="myButton" Foreground ="Black" FontSize ="20" FontWeight ="Bold" Template ="{StaticResource roundButtonTemplate}" Click ="myButton_Click"> Click! </Button>�

� �

Page 391: خطوة بخطوة مع فيجوال بسيك دوت نت

391

2��N : وא

� �

13. D WPF3

z$�� � :� ����ج�� �3�K�� �NF��אن���$�� _�D�Uص�'q �� WPF �N�� �(�� �g%א��53وWS�Uول��RN�� �א�9��د�، ��j

n�D�f��� ��. Avalon אو�Q��3�WPF ~��nFא ��_�א ^ ���א����د��Uא������h א $Hس�א �

o��� אل�_�D3D� אل��_�D�5Dא�^�2D� 9وCא�����O �������S�O3אNk$���א و3����53��!������ ،��������ج�K^3���S�O\א Projection �5 ��Nو{��א��،�:! Iلو���U��NS�*V+�� אل Graphics ��3��!��}�z$� <��NPא

���Q�� �:��I�53�$Q ل��lWSא\��3$7א �

رابط

http://developer.nvidia.com/docs/IO/11278/Intro-to-Graphics.pdf

�$03�Cא�Nن�� WPF ...�� �

�Q$ ������' 3D �א �KPTא�����9دوH$����]!−_�D�U��3¤�אن�א�kم� Graphics ����א����D�03�i4אل

:��TQ�W 1����א� א�1'ط���7��Yط�����D�U Graphics - 53��D'F��9��'S��3 ��O_�אل Hello World وאe�h�^�^\�53א��D'F���g7'ل�א� �و ��NP���ج� �h�Q�(���gOאل−�אو%:��3−א�kم� ^D�K$د�Cو%:،�אو�����0�1א

projection�h����7 ��אل� �Q$R$�א�9��د�وא���U�h�^�^\א�lWS���� �����N\3אD� �������iH'V���g(����r � �

��JO ���WS�03�K3א�א ��_��System.Windows.Media.Media3D$א7N���Q'م�����אد�א����V�+\א��Sو�.� �

#C كودusing System.Windows.Media.Media3D;

Page 392: خطوة بخطوة مع فيجوال بسيك دوت نت

392

� � VB كود

Imports System.Windows.Media.Media3D;

oQ��� �� وא W���RN� Viewport3D 53��NNP>ج�אو�9�� �KPTא���،�:! Iא�و3�P �$Q$���ل�א �¯��Qو�'ع�א ^3 :� �

كود<Viewport3D Name="mainViewport" ClipToBounds="True"> <Viewport3D.Camera> <PerspectiveCamera FarPlaneDistance="100" LookDirection="-11,-10,-9" UpDirection="0,1,0" NearPlaneDistance="1" Position="11,10,9" FieldOfView="70" /> </Viewport3D.Camera> <ModelVisual3D> <ModelVisual3D.Content> <DirectionalLight Color="White" Direction="-2,-3,-1" /> </ModelVisual3D.Content> </ModelVisual3D> </Viewport3D>

� ��: و�Uز�Hא��3 �

� � #C كود

MeshGeometry3D triangleMesh = new MeshGeometry3D(); Point3D point0 = new Point3D(0, 0, 0); Point3D point1 = new Point3D(5, 0, 0); Point3D point2 = new Point3D(0, 0, 5); triangleMesh.Positions.Add(point0); triangleMesh.Positions.Add(point1); triangleMesh.Positions.Add(point2); triangleMesh.TriangleIndices.Add(0); triangleMesh.TriangleIndices.Add(2); triangleMesh.TriangleIndices.Add(1); Vector3D normal = new Vector3D(0, 1, 0); triangleMesh.Normals.Add(normal);

Page 393: خطوة بخطوة مع فيجوال بسيك دوت نت

393

triangleMesh.Normals.Add(normal); triangleMesh.Normals.Add(normal); Material material = new DiffuseMaterial( new SolidColorBrush(Colors.DarkKhaki)); GeometryModel3D triangleModel = new GeometryModel3D( triangleMesh, material); ModelVisual3D model = new ModelVisual3D(); model.Content = triangleModel; this.mainViewport.Children.Add(model);�

� � VB كود

Dim triangleMesh As New MeshGeometry3D() Dim point0 As New Point3D(0, 0, 0) Dim point1 As New Point3D(5, 0, 0) Dim point2 As New Point3D(0, 0, 5) triangleMesh.Positions.Add(point0) triangleMesh.Positions.Add(point1) triangleMesh.Positions.Add(point2) triangleMesh.TriangleIndices.Add(0) triangleMesh.TriangleIndices.Add(2) triangleMesh.TriangleIndices.Add(1) Dim normal As New Vector3D(0, 1, 0) triangleMesh.Normals.Add(normal) triangleMesh.Normals.Add(normal) triangleMesh.Normals.Add(normal) Dim material As Material = New DiffuseMaterial(New SolidColorBrush(Colors.DarkKhaki)) Dim triangleModel As New GeometryModel3D(triangleMesh, material) Dim model As New ModelVisual3D() model.Content = triangleModel Me.mainViewport.Children.Add(model)�

: وא P���2��N'ن

Page 394: خطوة بخطوة مع فيجوال بسيك دوت نت

394

G�P\א���� �: א��3 �� �

#C كودprivate Model3DGroup CreateTriangleModel(Point3D p0, Point3D p1, Point3D p2) { MeshGeometry3D mesh = new MeshGeometry3D(); mesh.Positions.Add(p0); mesh.Positions.Add(p1); mesh.Positions.Add(p2); mesh.TriangleIndices.Add(0); mesh.TriangleIndices.Add(1); mesh.TriangleIndices.Add(2); Vector3D normal = CalculateNormal(p0, p1, p2); mesh.Normals.Add(normal); mesh.Normals.Add(normal); mesh.Normals.Add(normal); Material material = new DiffuseMaterial( new SolidColorBrush(Colors.DarkKhaki)); GeometryModel3D model = new GeometryModel3D( mesh, material); Model3DGroup group = new Model3DGroup(); group.Children.Add(model); return group; } private Vector3D CalculateNormal(Point3D p0, Point3D p1, Point3D p2) { Vector3D v0 = new Vector3D( p1.X - p0.X, p1.Y - p0.Y, p1.Z - p0.Z); Vector3D v1 = new Vector3D( p2.X - p1.X, p2.Y - p1.Y, p2.Z - p1.Z); return Vector3D.CrossProduct(v0, v1);

Page 395: خطوة بخطوة مع فيجوال بسيك دوت نت

395

}�� �

VB كودPrivate Function CreateTriangleModel(ByVal p0 As Point3D, ByVal p1 As Point3D, ByVal p2 As Point3D) As Model3DGroup Dim mesh As New MeshGeometry3D() mesh.Positions.Add(p0) mesh.Positions.Add(p1) mesh.Positions.Add(p2) mesh.TriangleIndices.Add(0) mesh.TriangleIndices.Add(1) mesh.TriangleIndices.Add(2) Dim normal As Vector3D = CalculateNormal(p0, p1, p2) mesh.Normals.Add(normal) mesh.Normals.Add(normal) mesh.Normals.Add(normal) Dim material As Material = New DiffuseMaterial(New SolidColorBrush(Colors.DarkKhaki)) Dim model As New GeometryModel3D(mesh, material) Dim group As New Model3DGroup() group.Children.Add(model) Return group End Function Private Function CalculateNormal(ByVal p0 As Point3D, ByVal p1 As Point3D, ByVal p2 As Point3D) As Vector3D Dim v0 As New Vector3D(p1.X - p0.X, p1.Y - p0.Y, p1.Z - p0.Z) Dim v1 As New Vector3D(p2.X - p1.X, p2.Y - p1.Y, p2.Z - p1.Z) Return Vector3D.CrossProduct(v0, v1) End Function�

�: و�Uز�Hא��3 �

� � #C كود

Model3DGroup cube = new Model3DGroup(); Point3D p0 = new Point3D(0, 0, 0); Point3D p1 = new Point3D(5, 0, 0); Point3D p2 = new Point3D(5, 0, 5); Point3D p3 = new Point3D(0, 0, 5); Point3D p4 = new Point3D(0, 5, 0); Point3D p5 = new Point3D(5, 5, 0); Point3D p6 = new Point3D(5, 5, 5); Point3D p7 = new Point3D(0, 5, 5); //front side triangles cube.Children.Add(CreateTriangleModel(p3, p2, p6));

Page 396: خطوة بخطوة مع فيجوال بسيك دوت نت

396

cube.Children.Add(CreateTriangleModel(p3, p6, p7)); //right side triangles cube.Children.Add(CreateTriangleModel(p2, p1, p5)); cube.Children.Add(CreateTriangleModel(p2, p5, p6)); //back side triangles cube.Children.Add(CreateTriangleModel(p1, p0, p4)); cube.Children.Add(CreateTriangleModel(p1, p4, p5)); //left side triangles cube.Children.Add(CreateTriangleModel(p0, p3, p7)); cube.Children.Add(CreateTriangleModel(p0, p7, p4)); //top side triangles cube.Children.Add(CreateTriangleModel(p7, p6, p5)); cube.Children.Add(CreateTriangleModel(p7, p5, p4)); //bottom side triangles cube.Children.Add(CreateTriangleModel(p2, p3, p0)); cube.Children.Add(CreateTriangleModel(p2, p0, p1)); ModelVisual3D model = new ModelVisual3D(); model.Content = cube; this.mainViewport.Children.Add(model);�

� � VB كود

Dim cube As New Model3DGroup() Dim p0 As New Point3D(0, 0, 0) Dim p1 As New Point3D(5, 0, 0) Dim p2 As New Point3D(5, 0, 5) Dim p3 As New Point3D(0, 0, 5) Dim p4 As New Point3D(0, 5, 0) Dim p5 As New Point3D(5, 5, 0) Dim p6 As New Point3D(5, 5, 5) Dim p7 As New Point3D(0, 5, 5) 'front side triangles cube.Children.Add(CreateTriangleModel(p3, p2, p6)) cube.Children.Add(CreateTriangleModel(p3, p6, p7)) 'right side triangles cube.Children.Add(CreateTriangleModel(p2, p1, p5)) cube.Children.Add(CreateTriangleModel(p2, p5, p6)) 'back side triangles cube.Children.Add(CreateTriangleModel(p1, p0, p4)) cube.Children.Add(CreateTriangleModel(p1, p4, p5)) 'left side triangles cube.Children.Add(CreateTriangleModel(p0, p3, p7)) cube.Children.Add(CreateTriangleModel(p0, p7, p4)) 'top side triangles cube.Children.Add(CreateTriangleModel(p7, p6, p5)) cube.Children.Add(CreateTriangleModel(p7, p5, p4))

Page 397: خطوة بخطوة مع فيجوال بسيك دوت نت

397

'bottom side triangles cube.Children.Add(CreateTriangleModel(p2, p3, p0)) cube.Children.Add(CreateTriangleModel(p2, p0, p1)) Dim model As New ModelVisual3D() model.Content = cube Me.mainViewport.Children.Add(model) �

2��N : وא

53�h�7��1� � <��NPא\'א�lWS�U���bא�� : א\�H$Vא W�א��WS�h�Q'�)�:N3���7א�א $Hس��n�Dא �א��aא

� � رابط

http://www.kindohm.com/technical/wpf3dtutorial.htm

U��PR� � و<��NPא\������ � ع��53��NP>�23�����KFD���O���n�Dא�� ���2 �KPTא��N 3א� �P'ن�א�P : א

Page 398: خطوة بخطوة مع فيجوال بسيك دوت نت

398

���Hאو�C� �� �P'ن��� �KPTא�h��sH :

� �� �

XNA عالم .14

����03�K3��� �%����א $.��N�� ��_�ذא��� �. D� : � z�,�C� �א� ��C�Xو � ����%� $.���]!� ،� א ^ ���א����د03�K3��� ����03�K3א ��_�א ^ ���א����د�،� Wא� Cو��C OpenGL 53��Sو�Direct3D 03 א����bא���h���P\א

���b�oQ��� ��Cن�אل PQ�5'ن�א���.�' �� XNA �53אل�i$Q$%��D'F���S API's n�D���N�3 DirectX

Page 399: خطوة بخطوة مع فيجوال بسيك دوت نت

399

���f$g� אل�h���P3�03�K3��� ��53א $وאل�وא\�gم � DirectX��K�gא�������}D���g$د�� �����W�ON� $g�53א��^P �. א ��h���Fא ���tن���WI]Q��SW�ONא �

�`XNA ��F אل� H�V�Iא��S : DirectX Next Generation Architecture �Sو� ��ZTط� ، �gNP �و ������+�� Express �53א���P3ن���'P����7�9�،�KF�� �'Qאل���'د'`�O ��،�.����XNA K�FR א��T3�z�Tوع 'g��

XNA � �� �: �53א �א��aא �

aא�� ��������NP>��1א�O��9دWS�53�iא�א� '����N��ول������ :�� �� �

رابط

http://www.c-sharpcorner.com/UploadFile/mgold/XNAIntro04192007233237PM/XNAIntro.aspx

� �� : و��P'ن�����2}������� �KPTא

2343��N�� ��ذא �![�� DirectX א�ن ���� � �אد���Hא H�Oق 0�1 ��� ...���4 �א ��!�RولW��5P�� _� ' � �3C�... ���%��Xא H�Oق DirectX iZO ����+$אم �

� �

15. Microsoft Expression Studio � �

15.1. Microsoft Expression Web

Page 400: خطوة بخطوة مع فيجوال بسيك دوت نت

400

�FV��23��4 �א ��WSא����Q� K^3� i3'%'د� �q�b�]����ROb�KFD�n�D�¤$D��Qو� i���� �7Q�1�����ROb ��

XHTML, CSS, XML, XSLT�� �� �KPTא���: �����j� : א 'א%��gא

t �א��53א9دوא�hא <��NPא��+$אم� �S${��MQא� ¤�NS� ،�*j�Vא��n�D�KQ$�� ����ROb���FVوא��Q$�.$3 HTML �� ���K�gא ����03�K3אل \�א.�*j�VI�¤�NS�،�z�1Iא� styles � ����Q�K��a7!א�WS�@� �،� ^3

:��'אI�53�z ل I�53���4 ��. C phpو�I�53 ل Asp.net א �23��4א �

�NS�53�z$� ���NP>�$Q�Fא :�� �

رابط

http://www.microsoft.com/expression/features/default.aspx?key=web � �

15.2. Microsoft Expression Design� �

��WSא�א 7Q23��4$م� h��3'�� ���G�����K�gא �H'Vوא�i����9'��KPT ���: �����j� � �وI !:�،�א 'א%��gא�� א

:

Page 401: خطوة بخطوة مع فيجوال بسيك دوت نت

401

�NS�53�:�!��3��NP>�$Q�\א :�� �

رابط

http://www.microsoft.com/expression/features/default.aspx?key=design � �

15.3. Microsoft Expression Media

23��4 ��WSא�א����Q �g%א'� �iH'b�lWS�،��O��+\��3א !C�5Q'Pو��Gو�����KQ$�� :� �

Page 402: خطوة بخطوة مع فيجوال بسيك دوت نت

402

�NS�53�:�!��3��NP>�$Q�\وא :�� �

رابط

http://www.microsoft.com/expression/features/default.aspx?key=media � �

15.4. t Expression EncoderMicrosof

KPTQ�،��sو�D�03�KD�O� ����jא�� �v�F� ��א����Q iH�23��4א������9دא א ����N7א�$Silver Light �53�i$Q א�g��T\و�'!��وא�PQ�3 ��N7� Flash 53 Micromeida 537��و��� Adobe �� �� .� �

����j� �23��4 א 'א%��gא :

Page 403: خطوة بخطوة مع فيجوال بسيك دوت نت

403

�NS�K�VO� �$�53�$Q�}�zא ��: <��NPא �

رابط

http://www.microsoft.com/expression/features/default.aspx?key=encoder � �

15.5. Expression Blend

����،��O��+\א��������h�g%وא���FV� �K�VO���:ND�$Q�\ول�3��!��א�RN��،���FV�� �i�3�$د�Kjو���� ��!'Q�... WS�Uא�א $Hس �

1�������I�53�a ل��KFDول�א�ن��RN� Expression Blend ����.�،��7��� C�:��FR����.�:��qTو�53�9א �وא��aאH���Iو����53א New Project ���53و WPF Application (*.exe)�� �� �KPTא�� :

Page 404: خطوة بخطوة مع فيجوال بسيك دوت نت

404

KF� ���5 ��g��D framework 1وאل <��NPא�H���Iא ���qא Q���t$�אQ�+� ���و�P3ن�א��!�s0א� .� �

53 View ZIא Active Document View 0s' و�א ��ض� �D XAMLض ��Split 53�5PF و����53א�ZIא� �� �KPTא����.' : א ��د�O��U@�א

hא�دوא�K��$`���،��,�T ������FV'א�zא ���7وא �i�,�OوC�،�:! Iو�CزHא�Hא�وא��3א �G��%�n�D tא��g� ����ج��

Page 405: خطوة بخطوة مع فيجوال بسيك دوت نت

405

h����3و �I��n�D�aqM �<��NPא �MQא� ،��������U� �g3$+�����t ��53א�دوא�hא :! Iص�و'VN ��b�ND א ^3�� �� �KPTא���h�0א�دوא�B�� �����ض���Fj�7 : א

��$`���،���� אدא�53��D'F��iא��n�D�*j�Vא�����،�G����gN3�0�1א �I ��g(\����PR ل��U������FDא:! Iو :

� �

�א W��Canvas���b�I�iH'b�:�!�0MN و.����Q$R$�א���دWS�،�lא�S'�אل �s����.�،�0Q����� Canvas!�א�ن���1�����g��D���א��N� hو�1�]� �: א �

� �

Page 406: خطوة بخطوة مع فيجوال بسيك دوت نت

406

� � كود

<Canvas> <Canvas x:Name="MainImageCanvas" Canvas.Left="40" Canvas.Top="120">

� ��!�s����.א�ن� MediaElement � ^3�iH'b�:�!�0MN 3��,��i–و�iH'b�0s'���.و�C�−�2ن����'P���، XAML

� �� �KPTא�� :� �� �

كود<MediaElement x:Name="MainImage" Source="c:/example/futex.jpg" Width="300" Height="300" > </MediaElement>

� ��������א�n�D�hאل وא�ن��7N'م���1�]� 1�������FDא\�I�53�K ل�א�Canvas V א������P���،�*j'ن�

2��� XAML � �� �KPTא�� :� �� �

كود<Canvas.RenderTransform> <TransformGroup> <SkewTransform x:Name="MainSkewTransform" AngleY="-19" AngleX="0" CenterX="0" CenterY="0"/> <ScaleTransform x:Name="MainScaleTransform" ScaleY="1" ScaleX = "1" CenterX="0" CenterY="0"/> </TransformGroup> </Canvas.RenderTransform> </Canvas>

� �

n�D�aqM �`��� F5 א�ن�.���� � �� : א ��ض�وא W���P'ن��� �KPTא

Page 407: خطوة بخطوة مع فيجوال بسيك دوت نت

407

�MQC�iH'V� �K( 3��,�j�VI�53�i*�א C�،�i�,�Oو��RN� �0MN���NS��N���{�Uول��1�����)���Qא��g7��1���NP>�،،��FgM���n�D�Y�H'bKF�7'م��Nא��W � Canvas i�\א�lWS��O����K�3��Q�03�5زوאP و��0M!�:�א MQC�iH'V��و

��،�iH'V � P� XAML'ن�������r2��ذ�א��א�fא�� �KPTא�� :� �

كود<Canvas x:Name="ReflectionImageCanvas" Canvas.Left="260" Canvas.Top="640"> <MediaElement x:Name="ReflImage" Source="c:/example/futex.jpg" Width="300" Height="300" Volume="0"> </MediaElement> <Canvas.RenderTransform> <TransformGroup> <SkewTransform x:Name="ReflectionSkewTransform" AngleY="19" AngleX="-41" CenterX="0" CenterY="0" /> <ScaleTransform x:Name="ReflectionScaleTransform" ScaleY="-1" ScaleX="1" CenterX="0" CenterY="0" /> </TransformGroup> </Canvas.RenderTransform> </Canvas>

� �

KPT ���iH'V� �2��N � و��P'ن�א�� : א

Page 408: خطوة بخطوة مع فيجوال بسيك دوت نت

408

�!�sא��S��g�3�K3���N���17���I� א���`�2����$אلW �،��MQC�*j�V�5א�Fs�53�،�K( �iH'Vא���!�OT XAML א

�Q�gN � �Uא�� �KPTא�� :� �

كود<Canvas x:Name="ReflectionImageCanvas" Canvas.Left="260" Canvas.Top="640"> <MediaElement x:Name="ReflImage" Source="c:/example/futex.jpg" Width="300" Height="300" Volume="0"> </MediaElement> <Canvas.RenderTransform> <TransformGroup> <SkewTransform x:Name="ReflectionSkewTransform" AngleY="19" AngleX="-41" CenterX="0" CenterY="0" /> <ScaleTransform x:Name="ReflectionScaleTransform" ScaleY="-1" ScaleX="1" CenterX="0" CenterY="0" /> </TransformGroup> </Canvas.RenderTransform> <Canvas.OpacityMask> <LinearGradientBrush StartPoint="0.5,0.0" EndPoint="0.5,1.0"> <GradientStop Offset="0.345" Color="#00000000" x:Name="ReflGradientStop1" /> <GradientStop Offset="1.0" Color="#CC000000" x:Name="ReflGradientStop2" /> </LinearGradientBrush>

Page 409: خطوة بخطوة مع فيجوال بسيك دوت نت

409

</Canvas.OpacityMask> </Canvas>

� �

���a���אD$אدא�hאلM���. Left وאل Top ��אوQو$Q�،����b9א�iH'V 1��n�D��7אN3�K( ��53א P'د����iH'b�Kא : ����2א P�� iH'V'ن

K3�P ��: XAML א P'د�א �

كود<Canvas> <Canvas x:Name="MainImageCanvas" Canvas.Left="40" Canvas.Top="120"> <MediaElement x:Name="MainImage" Source="c:/example/FUTEX.JPG" Width="300" Height="300" > </MediaElement> <Canvas.RenderTransform> <TransformGroup> <SkewTransform x:Name="MainSkewTransform" AngleY="-19" AngleX="0" CenterX="0" CenterY="0"/> <ScaleTransform x:Name="MainScaleTransform" ScaleY="1" ScaleX = "1" CenterX="0" CenterY="0"/> </TransformGroup>

Page 410: خطوة بخطوة مع فيجوال بسيك دوت نت

410

</Canvas.RenderTransform> </Canvas> <Canvas x:Name="ReflectionImageCanvas" Canvas.Left="267" Canvas.Top="645"> <MediaElement x:Name="ReflImage" Source="c:/example/futex.jpg" Width="300" Height="300" Volume="0"> </MediaElement> <Canvas.RenderTransform> <TransformGroup> <SkewTransform x:Name="ReflectionSkewTransform" AngleY="19" AngleX="-41" CenterX="0" CenterY="0" /> <ScaleTransform x:Name="ReflectionScaleTransform" ScaleY="-1" ScaleX="1" CenterX="0" CenterY="0" /> </TransformGroup> </Canvas.RenderTransform> <Canvas.OpacityMask> <LinearGradientBrush StartPoint="0.5,0.0" EndPoint="0.5,1.0"> <GradientStop Offset="0.345" Color="#00000000" x:Name="ReflGradientStop1" /> <GradientStop Offset="1.0" Color="#CC000000" x:Name="ReflGradientStop2" /> </LinearGradientBrush> </Canvas.OpacityMask> </Canvas> </Canvas>

� � Wא N��9 MediaElement@�אن�،�z�,�ن�א'P�5אن��P> ���1NQ��]� %�3�X^ �وQ$�!�0s'�و��`$�אن��O@�א�3�e�:��D ...� �

�. ��'دQ'�و���ON��KF@�א P iH'V'د��S��F'����א �O`'אل�����<�K7���NPא �

� �� �

�!��}� �� �13� �� � 234F�� ��]�� �אذ��¤ �אن G��א ،� �Q�gN �א K�. _�D� _�� �א �WSא 5D� ^P Microsoft א

Expression��3�K��،�YFFVF� � b3'%:�א�'g! �03אل�K3��� �. א S��FgQ XAML a7!��{�N'�א �

���� WS�5D�$Q����3�K��NS�53�z$� �: �lא¡��NP>��D'Fא �� �

رابط

aspx.136522cc/us-en/com.microsoft.expression://http

Page 411: خطوة بخطوة مع فيجوال بسيك دوت نت

411

� �� �

� �� �� �� �� �� �� �� �� �

ADO.netقواعد البيانات

� �� �� �� �� �� �� �� �� �� �� �� �� �� �

الباب

17

Page 412: خطوة بخطوة مع فيجوال بسيك دوت نت

412

� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �

Page 413: خطوة بخطوة مع فيجوال بسيك دوت نت

413

: قدمةم �N�+��א ��S �>$7א$�3אد Active Data Object.net אو��f�����3אH�V�Iא����� ADO.net אل ADO �t א

������hאو ��PQ�3�53و�'!��،�و3�����6�S'%'د�U�iאb$אHא�h!�`'אل������ ��_��3ودא�hא� �MQא$�3אد�א

Data Providers i$Q$D� H'1�� K��{�א h�3� t �א א 53� $Q$� �א h$g,وK^3� h��N7� DAO, RDO .�

@PD�n�D7$<� و ������hوא �23��4אو ADO א N�+��א ���Oא��Vل���i$D�.�Yא��VV�������t ��Yא��دم� א

K�F� �ADO.net �3$x !¦ن Client/Server وא i�3ود� �R�bא disconnected �1א�M3� ��V�� 5 � ��r ��Vل �h����� �.دא�i$D�7���Fjא �

� ��IC�h�.و�!�¤�NS�A�Y��N7� �: WSא��Y��S�%'3א �

��. XML א $��Dא �K3�Pل�- �������hא\���i$Fوא $وאل�- �. א\��+$�3 ز�Qد�C�i'אع�א �-�iد�Qز �D�� �. א �-��R�bא��gא� managed code K3�P �� .� �

n�Dא�9 ع���NP> �NS�h�.و�O �'ل�א�K�b�O� �: �53�$Q�3א �

� � رابط

aspx).71.VS(k4fck904/library/us-en/com.microsoft.msdn://http

� �

net . ADOالبدء باستخدام .1

�S����D'�א��אد �3�K��a7! א������ ���B��S${�،� �g���bא���h���P\א�System.Dataن��'P��� �S$��� ،�Q�7�����D !0s' ���U�G�����Nא �I�53�KF ل�א ��ذא �F� Connected وC Disconnected �U�،Lא� �

K� ��א ^�����!����3�n�D�KVא�Lא��3א�h����� ������hאو� �7'م� א�و����P'ن��n�Dא��Vل�دא�i$D�7���jא �`��GאA'��K3�����5 ��Nو�Hد��Qא$��U�،���D�Fא��h Q$�� 03 �����א Connected �F�!�I�0א�s'� ��7��. ��N�'د�9 �

� �

Page 414: خطوة بخطوة مع فيجوال بسيك دوت نت

414

net Data Provider . ADOمكونات .2 1−�Connection�: i$D�7��� �Vא��z�T�53א���NP> h����� �. א �2−�Command�:א��� م����B�W�ON��53��NPe SQL h����� �. �i$D�.�n�Dא �3−�DataReader DbDataReader IdataReader� :�{�N ������hא �א iz�53.�א��NPeא��� م�� ���FD�5D� �

���Kא\^�ل�،��n�D a7!�$� �5Pא P���2��N'ن� ��7א�a7!�izو�Uא}��lوא .� �4−�DataAdapter DbDataAdapter IdataAdapter� :�iH'b� n�D� �אVL'ل n�D� �NPe �h����� �א 53

�!�sא�KFDو��gN���K7N� �. :و��$�KQو��fWوI ! א\�1'����'א�z%$ول�אو����Bא��� م�و�53��NPeא �5−�Parameter DbParameter IdataParameter�:א��9� م��KB����hאq�3��Q�F����b�I .� �

المدعومة من قبل مايكروسوفت Data Providers ـال .2.1

System.Data.OleDb:�� ����ن ' �5P � ،�h����� �א $D'ع��53.'א���03א�K3���� � �g3�5א��+$אP> U3'%'د�� �I�� ������3�hود �א i$D�7 �

�. א��1[ ن�WSא�א N'ع�S'א �KMOQ��Fj�7א��+$א3:��)�א�� �

System.Data.SqlClient:�� �$Dא'.� 03�K3���� � �g3א��+$א� ������KMOQ hدو3� ��53א\�gم� SQL Server א �D'F��n�D�'��� �gא�����

���WS�03�K3א����bא�� h����� �. א N'ع��53.'אD$�א �

System.Data.SqlServerCe:�� �KMOQ אh������i$D�.�03�K3��� ��א���U��g3א$+�� SQL Server CE �03אل�K3��� ����bא�� Pocket PC .�� �

System.Data.Odbc:�� �

o�3�א Odbc �k I�53�:�3�K3��� �. <�5Pא �� �

System.Data.OracleClient� �KMOQ �k I�53�Kא�HوC�h����� �. א ����03�K3.'אD$�א �

� �

Page 415: خطوة بخطوة مع فيجوال بسيك دوت نت

415

Party -d Thirة أخرىالتعامل مع مزودات خدم .2.2ADO.NET Data Providers

h��7ذ������3ودא��� ������U hא �i�7Oא ������hא ��j����،�و �3�5Pذא��5D.'אD$�א 7'אD$�א MYSQL وC FoxPro وC

DB23^ �؟�� �����؟ ذא�U��1MN��KS OleDb hא ��9��Q�gN+$אم���iא]$ود�h����P39א��1[�وא��D�� �א �

9 � ،� �����Q'1���h���T ,���7��h$م� Cو���Data Providers X��b�I��g��`�N\ ADO.net�n.���3א���Gא

h�3$Iو�hא��4و���א��D����0�F������bא��h���T �: אWS�،���!�sא�א �א�3�a^�ل��g��D �3ودא�53�i$F��3�hא � رابط

htm.dataprov/com.sqlsummit.www://phtt

� �

Data .tem Sysمكونات الفئة .3

$D���3*�.'א�K��n�D��JO ��53دوאل�وj�VI*�و���Kj��H�nא� z�1I��'��lWSא �g�3�K3��� ������hوא א

exceptionsض�����N��، �gVj�VI�n�D�f��� �������U���$�Oא��JO �: �lWS�h�Q'�)��SC���Q����NSא �

IDbConnection Interface: i$D�7ل���V�9����bא����JO �� ���Q�:N3א,��7ق�א�� �����'�d�،�h��n�Dא $وאل�א : א

� � #C كود

public interface IDbConnection : IDisposable { string ConnectionString { get; set; } int ConnectionTimeout { get; } string Database { get; } ConnectionState State { get; } IDbTransaction BeginTransaction(); IDbTransaction BeginTransaction(IsolationLevel il); void ChangeDatabase(string databaseName); void Close(); IDbCommand CreateCommand(); void Open(); }

� �

Page 416: خطوة بخطوة مع فيجوال بسيك دوت نت

416

VB كودPublic Interface IDbConnection Inherits IDisposable Property ConnectionString() As String ReadOnly Property ConnectionTimeout() As Integer ReadOnly Property Database() As String ReadOnly Property State() As ConnectionState Function BeginTransaction() As IDbTransaction Function BeginTransaction(ByVal il As IsolationLevel) As IDbTransaction Sub ChangeDatabase(ByVal databaseName As String) Sub Close() Function CreateCommand() As IDbCommand Sub Open() End Interface

� �

IDbCommand Interface:

:N3���Q وאل$ 9��KB�W�ON��03��7א��9� م�،�'�d��n�Dא�K3��� ����bא���h�JO �� א,��7ق�א�� : א

� � #C كود

public interface IDbCommand : IDisposable { string CommandText { get; set; } int CommandTimeout { get; set; } CommandType CommandType { get; set; } IDbConnection Connection { get; set; } IDataParameterCollection Parameters { get; } IDbTransaction Transaction { get; set; } UpdateRowSource UpdatedRowSource { get; set; } void Cancel(); IDbDataParameter CreateParameter(); int ExecuteNonQuery(); IDataReader ExecuteReader(); IDataReader ExecuteReader(CommandBehavior behavior); object ExecuteScalar(); void Prepare(); }

� � VB كود

Public Interface IDbCommand Inherits IDisposable

Page 417: خطوة بخطوة مع فيجوال بسيك دوت نت

417

Property CommandText() As String Property CommandTimeout() As Integer Property CommandType() As CommandType Property Connection() As IDbConnection ReadOnly Property Parameters() As IDataParameterCollection Property Transaction() As IDbTransaction Property UpdatedRowSource() As UpdateRowSource Sub Cancel() Function CreateParameter() As IDbDataParameter Function ExecuteNonQuery() As Integer Function ExecuteReader() As IDataReader Function ExecuteReader(ByVal behavior As CommandBehavior) As IDataReader Function ExecuteScalar() As Object Sub Prepare() End Interface

IdbDataParameter:

n�D�'�� :

� � #C كود

public interface IDbDataParameter : IDataParameter { byte Precision { get; set; } byte Scale { get; set; } int Size { get; set; } }

� � VB كود

Public Interface IDbDataParameter Inherits IDataParameter Property Precision() As Byte Property Scale() As Byte Property Size() As Integer End Interface

� �� �

Page 418: خطوة بخطوة مع فيجوال بسيك دوت نت

418

IdataParameter: � �

#C كودpublic interface IDataParameter��{ DbType DbType { get; set; } ParameterDirection Direction { get; set; } bool IsNullable { get; } string ParameterName { get; set; } string SourceColumn { get; set; } DataRowVersion SourceVersion { get; set; } object Value { get; set; } }

� � VB كود

Public Interface IDataParameter Property DbType() As DbType Property Direction() As ParameterDirection ReadOnly Property IsNullable() As Boolean Property ParameterName() As String Property SourceColumn() As String Property SourceVersion() As DataRowVersion Property Value() As Object End Interface

IdbDataAdapter: #C كود

public interface IDbDataAdapter : IDataAdapter { IDbCommand DeleteCommand { get; set; } IDbCommand InsertCommand { get; set; } IDbCommand SelectCommand { get; set; } IDbCommand UpdateCommand { get; set; } }

� � VB كود

Public Interface IDbDataAdapter Inherits IDataAdapter Property DeleteCommand() As IDbCommand Property InsertCommand() As IDbCommand Property SelectCommand() As IDbCommand Property UpdateCommand() As IDbCommand End Interface

Page 419: خطوة بخطوة مع فيجوال بسيك دوت نت

419

� �

IdataAdapter: � �

#C كودpublic interface IDataAdapter { MissingMappingAction MissingMappingAction { get; set; } MissingSchemaAction MissingSchemaAction { get; set; } ITableMappingCollection TableMappings { get; } int Fill(System.Data.DataSet dataSet); DataTable[] FillSchema(DataSet dataSet, SchemaType schemaType); IDataParameter[] GetFillParameters(); int Update(DataSet dataSet); }

� � VB كود

Public Interface IDataAdapter Property MissingMappingAction() As MissingMappingAction Property MissingSchemaAction() As MissingSchemaAction ReadOnly Property TableMappings() As ITableMappingCollection Function Fill(ByVal dataSet As System.Data.DataSet) As Integer Function FillSchema(ByVal dataSet As DataSet, ByVal schemaType As SchemaType) As DataTable() Function GetFillParameters() As IDataParameter() Function Update(ByVal dataSet As DataSet) As Integer End Interface

IdataReader:

� � #C كود

public interface IDataReader : IDisposable, IDataRecord { int Depth { get; } bool IsClosed { get; } int RecordsAffected { get; } void Close(); DataTable GetSchemaTable(); bool NextResult(); bool Read(); }

� �

Page 420: خطوة بخطوة مع فيجوال بسيك دوت نت

420

VB كودPublic Interface IDataReader Inherits IDisposable Inherits IDataRecord ReadOnly Property Depth() As Integer ReadOnly Property IsClosed() As Boolean ReadOnly Property RecordsAffected() As Integer Sub Close() Function GetSchemaTable() As DataTable Function NextResult() As Boolean Function Read() As Boolean End Interface

� �

IdataRecord: #C كود

public interface IDataRecord { int FieldCount { get; } object this[ string name ] { get; } object this[ int i ] { get; } bool GetBoolean(int i); byte GetByte(int i); char GetChar(int i); DateTime GetDateTime(int i); Decimal GetDecimal(int i); float GetFloat(int i); short GetInt16(int i); int GetInt32(int i); long GetInt64(int i); //... bool IsDBNull(int i); }

� � VB كود

Public Interface IDataRecord ReadOnly Property FieldCount() As Integer Default ReadOnly Property Item(ByVal name As String) As Object Get End Get End Property Default ReadOnly Property Item(ByVal i As Integer) As Object Get End Get

Page 421: خطوة بخطوة مع فيجوال بسيك دوت نت

421

End Property Function GetBoolean(ByVal i As Integer) As Boolean Function GetByte(ByVal i As Integer) As Byte Function GetChar(ByVal i As Integer) As Char Function GetDateTime(ByVal i As Integer) As DateTime Function GetDecimal(ByVal i As Integer) As Decimal Function GetFloat(ByVal i As Integer) As Single Function GetInt16(ByVal i As Integer) As Short Function GetInt32(ByVal i As Integer) As Integer Function GetInt64(ByVal i As Integer) As Long '... Function IsDBNull(ByVal i As Integer) As Boolean End Interface �

� �

erSQL Servالبداية مع .4� �

.إنشاء قاعدة البيانات .4.1� �

_�D�U������9א�h�JO 1����א�ن ADO.net א���53��N�gא� �. ،�و%��zو.��א �

YO&'F� � ^3� h������ i$D�.� z�Tא�� ���1�� �א�ن �!�`'אل� �RN� ���� Employeeول �+��� K�qT��� �.� �א�ن ،i$Q$%�'Qد'�� Windows Forms ���53و�، �� �. ����hא ز�H���I����.�3א\���Hوא �

�03 �53אb9$א�Hא ���C�0و�א�$�Eאو��n�Dא�K.9א N�+��א\'%'دPQ Sql Server i'ن� $���Q�+� �$אC�$��9��Qن

'Qאل���'د'`�O � Express א�� ��:�n�Dא �א��aא �

رابط

http://msdn.microsoft.com/vstudio/express/sql

�. وא �5Fs�07��tא¡��D'Fא¡������PQ�3�53و�'!� �

�Fj�.�53א�ن� View H���I����. Server Explorer �.�،�Gא����n�D�l$`�� H���Iא�<�5وא�H� ���aqM ��

Create New Sql Server Database�� �� �KPTא�� :

Page 422: خطوة بخطوة مع فيجوال بسيك دوت نت

422

،�h����� ���������P3א��i$D�.�z�Tאbא�ن�א aqsא������9א�$Q$R���a7!��. Create � �� �KPTא�� :

� �

***���PT3�� � �g(�� $. Dم�$� � �PQ'ن ��PT\א� lWS�K��G �q ��Uא ،� :�� KV�� �Kb9א�U� �!�� �و%'د $م� �Vא� ��P�T ��K�b'����.�a7!�،��PאT ��−���Z�9ل����Vم�و%'د�א�$D�� ���U�n���−X�%و� . a7!.�� �

Page 423: خطوة بخطوة مع فيجوال بسيك دوت نت

423

***��! ��א������g(Q�$. �� �� ��א�1[�א��H�� ��g(��5P � : و �

An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)�

H���I����.�234א ���53א�Lא�lWS�U Microsoft SQL Server 2005 ���53و Configuration Tools��53و

�� SQL Server 2005 Surface Area Configuration�*j�V�5א�Fs�53�$`��� ، Surface Area

Configuration for Services and connections�� �وא �gR�O�� �.� ،*j�VI� �אن 53� $�] Local and

remote connections�،����O3 KF�Q��!� ���� �[�C�53�$ن�אMQא��. .� �

�NP>��MQא �NSل�'�L�53א��D'F�������3 : � �

� � رابط

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=192622&SiteID=1

hول������$%��!�s���C$�N��،�KF�� �i�S�%و�h������i$D�.��Q$ ���bא�ن�א � �� �KPTא���YO&'\א :

Page 424: خطوة بخطوة مع فيجوال بسيك دوت نت

424

و��l،�א�ن��Stored Procedure א �K^3�KPTא $وאل�وא�%9אzא����P hא�s!��א�(�'Wg��h�Qא9��ªא�:���3�!�sא�H���I����NF. � �� : %$ول��� �KPTא

H���I��� ��7'م ���jH� v��O3� Y��� set primary key :��و� autonumber KQ$���� Identity �7'م

Specfications��� yes ���53و $Q$R7'م���� Increment ����iد�Q� �1وS'�3�$ل�א�� : ���U��Fא �KPTא

Page 425: خطوة بخطوة مع فيجوال بسيك دوت نت

425

��NP>��7Q�1 �ON��:�!�G����K7@�א �KQ$�� �7Q�1.���وj�VI*�אو�ON@�א .� �

�i�,��3��� ������U�hא���zא �.��C�n�D�f���N'אع�א �א���$�א�ªOr��.�z�g��9א�$ول�����Iא Employee_Info ^3 .

� ��NP>�،��7��� ������h ��$�אن�.1�����F'א�hא �$�U�zאد�Iل�א� ��gR�!و��Q$ �t �KPTא����אض�א�$אول�א��

� �� : א

Page 426: خطوة بخطوة مع فيجوال بسيك دوت نت

426

��3^ و�ON@�א ��NP>��7Q�1א�Dد���FV��iא�$ول�� �KPTא���h����� : و����F.�،�:! Iد�Iل�����א

� �

�U�h����� ��:�CSQL Server'אع�א ��Exact numerics

א N'ع א¡�ل�53 א¡�ل���9,223,372,036,854,775,807 -9,223,372,036,854,775,808 bigint

2,147,483,647 -2,147,483,648 int 32,767 -32,768 smallint

255 0 tinyint 1 0 bit

10^38 –1 -10^38 +1 decimal

Page 427: خطوة بخطوة مع فيجوال بسيك دوت نت

427

10^38 –1 -10^38 +1 numeric +922,337,203,685,477.5807 -922,337,203,685,477.5808 money

+214,748.3647 -214,748.3648 smallmoney 1.79E + 308 -1.79E + 308 float 3.40E + 38 -3.40E + 38 real

Dec 31, 9999 Jan 1, 1753 datetime (3.33 milliseconds accuracy)

Jun 6, 2079 Jan 1, 1900 smalldatetime (1 minute accuracy)

��`Lא������f��–�n���K�7Q�8000f��� char

�f��non-Unicode–�n���K�7Q�8000f��� varchar

�fو��non-Unicoden���KF��� �231 f���

varchar(max)

�fو��non-Unicoden���KF�� 2,147,483,647 f�� text

������fو�� Unicode n���KF� 4,000 f�� nchar

�fو��Unicode n���KF� 4,000 f�� nvarchar

�fو��non-Unicoden���KF��� � 230�f���

nvarchar(max)

�fو��Unicode n���KF� 1,073,741,823 f��. ntext

n���KF����������j�N��h����� of 8,000 �Q��. binary

h�����n���KF��iq�3���j�N�� of 8,000 �Q��. varbinary

n���KF��iq�3���j�N��h����� 231 �Q�� varbinary(max)

n���KF��iq�3���j�N��h����� 2,147,483,647 �Q��. image

� ��U�h����� ���net.و�ذא����N.$���'د��n�D�h)�م����C���F'אع�א��s'Q��!'و��PQ�3�53א�א�$ول�Wg!�،��(

K��U�hع������'��.net:�� �� �

CLR h����� SQL) �'ع�א

Server)

�U�h����� net�CLR SQL SERVER.�'ع�א

SqlInt64 Int64, Nullable<Int64> Bigint

SqlBytes, SqlBinary Byte[] Binary

SqlBoolean Boolean, Nullable<Boolean> bit

Page 428: خطوة بخطوة مع فيجوال بسيك دوت نت

428

$%'Q�9 $%'Q�9 char

$%'Q�9 $%'Q�9 cursor

SqlDateTime DateTime, Nullable<DateTime> date

SqlDateTime DateTime, Nullable<DateTime> datetime

SqlDateTime DateTime, Nullable<DateTime> datetime2

$%'Q�9 DateTimeOffset, Nullable<DateTimeOffset>

DATETIMEOFFSET

SqlDecimal Decimal, Nullable<Decimal> decimal

SqlDouble Double, Nullable<Double> float

$%'Q�9 $%'Q�9 image

SqlInt32 Int32, Nullable<Int32> int

SqlMoney Decimal, Nullable<Decimal> money

SqlChars, SqlString String, Char[] nchar

$%'Q�9 $%'Q�9 ntext

SqlDecimal Decimal, Nullable<Decimal> numeric

SqlChars, SqlString String, Char[] nvarchar

SqlChars, SqlString Char, String, Char[], Nullable<char> nvarchar(1), nchar(1)

SqlSingle Single, Nullable<Single> real

$%'Q�9 Byte[] rowversion

SqlInt16 Int16, Nullable<Int16> smallint

SqlMoney Decimal, Nullable<Decimal> smallmoney

$%'Q�9 Object sql_variant

$%'Q�9 $%'Q�9 table

$%'Q�9 $%'Q�9 text

TimeSpan TimeSpan, Nullable<TimeSpan> time

$%'Q�9 $%'Q�9 timestamp

SqlByte Byte, Nullable<Byte> tinyint

Page 429: خطوة بخطوة مع فيجوال بسيك دوت نت

429

SqlGuid Guid, Nullable<Guid> uniqueidentifier

$%'Q�9 iא]$د��JO O� User-defined@�אtype(UDT)

SqlBytes, SqlBinary Byte[] varbinary

SqlBytes, SqlBinary byte, Byte[], Nullable<byte> varbinary(1), binary(1)

$%'Q�9 $%'Q�9 varchar

SqlXml $%'Q�9 xml

� �

4.2. SQL Statements � �

����� ��h���Fא���z�Tوא ��5Q'P\�����א��!�sא�:! Iو�KQ$�� ������hو��h���FD�W�ONא�s9!��وא �i$D�.�U�hא��S��q� ������lWS�،�hא �و���SQL�Sج���� ��gFgO���q.'אD$�א�H�V�Iא�~� Structured Query Language.�� �

h����� . و�Oracle − Access - MS sql Server��S :� و����N7����Vא��9� م� ���C�0�B�03�KF'אع�.'אD$�א

��R� �����Fא��lWS�0−�7'م�j�,�'S��F��−�g�C�9�� א�$אول��z�Tوא��KQ$�� ���+$م��U��MQCא�s9!��وא�fWLوאh����� �. وא ���g���PRوא9دא�iHو��ذ � . و���n.'אD$�א �

�lWSא���� م���q �U�����j� �:��S�lWSא $وאل�א �� �

� �

Page 430: خطوة بخطوة مع فيجوال بسيك دوت نت

430

� �R�� ��g,א���� م�א����F���3�� �:����Sא ��q�Vא �

� � SQL Server كود

Select Colums_Name From Table_Name;�

���HC�53א���� م����Bن�'P��ª� � zא�%C :� �

Select:� 53��S��5D��R� �.KB �SQL و��Sא ���B���e�tא

Colum_Name:� د'F� :�Cن��g(Qא W���Q$ א���אC�K7Lو�א� .

From:� ��R� �.و���F´��b�I��q�b��MQC��Sא �Table_Name:� א���G�P���NS א�$ول .� �

�:��F���5P>��3�n�D�z$� ��Kא.�i�(����N �:��KFא���� م� Syntex ) א �Q'RN א 7'אD$(�و �

*�f��C�$%'Q�9 i�!�ق���Yא�qV �iوא�P . א

. 3����1�C�i�TD�:953��^�]��fZ�Q� �!=�3��!��ن�=�3��!���*

*����'7N3���b�Oא���� م���KB�0�B��g�N؛����N�C�9���� �����4 1���h�7א��U��g� ..$�����9ج��

��7��� �:وWSא�3^�ل��n�Dא����Fא �� �

SQL Server كودSELECT FName FROM Tb_Main;�

� �'א����g�sو��NNPF�!د�'FD�53��^�Cא��+�אج��$Q����Nو�ذא��KVOو��� ����gNא F!�،���b�O^ ���9+�אج�א����א�ول�

Iوא����א� : � �� �

SQL Server كودSELECT FName,LName FROM Tb_Main;�

�0M���N�¦!�h����� � (�Kא��z*�و��9+�אج��0�Bא�� �KPTא���� � : א7L'ل�وذ ��

SQL Server كودSELECT* FROM Tb_Main;�

Page 431: خطوة بخطوة مع فيجوال بسيك دوت نت

431

h����� � ��9+�אج�א����א�ول��03��fWא ��PאDISTINCT ... ^F! H ���+$م ��PאH �$ون �و 5Pو��9+�אج�א �

� � SQL Server كود

SELECT DISTINCT FNAme FROM Tb_Main;�

�� ������hא\+�%���C��Q$D�Vو���Nز �� �G��ZאMQC �3م�א�$+��� :

ORDER BY colum ��$D�V Cو

ORDER BY colum DESC

^F!B��9+�אج���h����� ���Gא����א�ول �03א �G��Zא �D�V$ �0א : � �� �

SQL Server كودSELECT * FROM Tb_Main ORDER BY FName DESC;�

� ���

�G��Z� �YQ'��3�KFD��NNP>�0−وj�,�'S��F��−� ���Gא����א�ول�و�53 �وذ�G��Z� � ^F!�،���b�O ����+$אم�א�Iא����א����:� �

� � SQL Server كود

SELECT * FROM Tb_Main ORDER BY FName,Lname ;�� �

�� �[��q�b�WIא��+$אم�א\��وא�T��iط�����FD�Uא���� م�� �: א ��q�Vא �� �

SQL Server كودSelect * From Tb_Main Where Field = Value;�

� � �. = و���� <> Cو >= Cو <= Cو > Cو < و<��NNPא��+$אم

%�Y�3��3א�IC7�و�����g¦ذن�א��9�TNد��$ �FSو Like و Between .�

QW ��� م��5Dא��z�.$bא� ^F!5��SH�FDC�و����18 �N� : � �

� �

Page 432: خطوة بخطوة مع فيجوال بسيك دوت نت

432

SQL Server كودSELECT * FROM tb_Main WHERE age = 18;�

�53��qbC��S�53�z��Cض��� �: ��50�Nو �

� � SQL Server كود

SELECT FName,LName FROM tb_Main where age < 50;�� �

0MNو� Value �� �� �KPTא���� ��������b'V��وذ���U�iد�O3�*�VN��t3 D�Y�−5D��R�� א�,+�ص� ���)�: C"$(�وא ��k�5QWא���� �

� � SQL Server كود

SELECT * FROM tb_Main WHERE Fname = 'ahmed';��

�t3 D�0MN���F�#$%'��9و�،�¢QH��5'אD��R� 3^��� �ND$�אCg��,��q�b�WI]���gNP �،�h����� �����i$D�.�U�¢QHא� �� �� : � �

� � SQL Server كود

Select * Form Table1 Where Date > #12/03/04#;�� �

��R:�وא�ن� �$C��Sو�����7,�ط��03א����I��z�O؟ �3ذא� '�HCد���אCو�Cوط��,��D'F����7R��

�� �h�qא �Or���4و�WS�K%C�53�1��Andא�א �qض����+$م�א\���h 3א\���71Nא�U��NF�����F��.� �� �

4PQ�5QW ��5D��Rא�,+�ص�אN��،�0Q�5 وא�ن����3^�ل���D��S�FD17Y%א���3و'�'PQ�9Cط��T�� : � �� �

SQL Server كودSelect Fname from tb_main where age > 17 and marry = false;��

K3��\א��+$אم�א Like :� �

K3��\م�א$+��� Like g��T\א�h�F�P ��5D��Rא��Y�3���� � ...

K3��F� �� Like و���+$م��� � : א ��q�Vא �� �

Page 433: خطوة بخطوة مع فيجوال بسيك دوت نت

433

SQL Server كود

Select * From Table Where Field Like '%Name٪';�

� �����3�f٪���+$م�Cو%'د��n�D�� 9$� ��...�g3$+����$.و ��Fgو����C�،��Q�gN �$אC�،��Qو�א و�����Mא��U�.�U��3א

�: ^��א�3 �� �

��ض n�Dא�و����Sz��C�'���$.�5QW �: �N��+$م����Bא��� م��Wgא�א hm ... KPT א�,+�ص�א �� �

SQL Server كودSELECT * FROM Tb_Main WHERE FName like '%hm%';��

�Sz��C�C$���5QW ��5D��Rא�,+�ص�א ��3 '�HCد���אC f�r A �0M��5 Wא��٪�R� ���F���Kא. : � �� �

SQL Server كودSELECT * FROM Tb_Main WHERE FName like 'A%';�

f�r��gא���g�NQ�5QW ��5D��Rא�,+�ص�א �$א��Qدون�א �0MN��Y�3٪�Q�gN و '�HCد���א �. ��Uא �� �

مالحظة %بد~ من * نستخدم MS Accessفي

� �������C�2�Nن�����٪،�fو�Lد��53א$D�C�c��� D�$Q$�د���HC�' �3�5Pذא�fو�L؟ $د�א

'����+$م��Lא�lWS�U"_�"�U��S�&�N3�،Access��S�O��3א��� D�'S�"؟.�"� �� �

�3� א���+$אم א

C�D$د��53א����fא��$אD�V!��Ob�53�z$א %

_ (underscore) �a7!�$����fوא.

[ ]

Like '[A-N]ack'

3^ ����Y��fאل��،�Y�3�A$3�53�a7!�$����fوאAوאل��N

[^]

Like '[^B]ack'

���fوא�$�!PQ�9C��1Q�,�a7'ن�S'�א]$د�،�3^ ���PQ�9�f'ن�B

� �

Page 434: خطوة بخطوة مع فيجوال بسيك دوت نت

434

��5�$C:��ذن�QW �. !�T�3 a7ط�Cن�PQ'ن�D$د���و!f�r��Sz��C A ��g �3ذא� '�HCد���Cن����5D��Rא�,+�ص�א �� �

SQL Server كودSELECT * FROM Tb_Main WHERE FName like 'A__';�

. Between استخدام المعامل

�g,Cو�،�Y�3�1��5ق�Fs��R�� �K3��\א�אWS+$م����5 �Fs��R� א����Fل�Wkא�א\��S�K3'�א��+$א�U�:3א

¢QHא'� �. א �

�������R+$אم �� �WI]Q betweenא�� �: א ��q�Vא � SQL Server كود

SELECT colum FROM table WHERE field BETWEEN v1 AND v2;�� �

�: 60و� 20 Z��5QWوאF!Y���SH�FDC�v^ ���9+�אج�א�,+�ص�א �� �

SQL Server كودSELECT * FROM tb_main WHERE age between 20 and 60;�

� �¢QHא'� 1�����א�Lل و<�5Pא��+$אم��O@�א �03��7Q�1א����z،�وא� .

� � . الدوال في االستعالمات

KB�h����5Fsوאل�$ �−���،�و���$�.���Fو��$��d�i+$אم�،�و�3وj�,��S���א9،�א��9� م� ���+$م�א �$�53�$Qא

�. ���n�D�f���N���א $وאل���03���א�I���^3 ل�WSא�א $Hس - ��9��$�%$ول �

KPT � و Q���i�(���(NN������א ��q�Vא ����9��3+$אم�א $وאل�وא �WI]��tא�� �: א �

SQL Server كودSELECT func(colum) FROM table WHERE condition;��

� �: AVG א $א

Page 435: خطوة بخطوة مع فيجوال بسيك دوت نت

435

a�'�3�X��L��3،�و�K7��a�'�3�� � ���lWS��N�1א $א�� ������3C�G�P�� ^3�hא��� �: א��i$D�.�U�H�FDא �

� � SQL Server كود

Select AVG(Age) from tb_main;�� �

' �K�ON�3ذא���K�+אن����� ����>�0FאH.�م���K و�h `� _����+$م��lWSא $א ��،��N���N$و�0�B�n�D�Hא��K`�K7�N��� א�WPSو�� �� . - ������−���א

�: L25���H�FDC�a�'�3�Xא�,+�ص�א ��NNP>��MQC�... ^F! �5D��SH�FDC�$Q���9�5QWא��+$אم�א $א ����Tط� �

SQL Server كودSELECT AVG(Age) FROM tb_main where age < 25;�

� ��(�9�' ��K7���א�� �U��g(Q�� '%$C�hن�����2א $א Expr100 �3و�C �:��,�...��.א�W −�$Q����Nذא����−�

�Q���5D�2��N ��K7א���F���iد�D�� As � �� �: �7�����NF�����F��و�� �KPTא �� �

SQL Server كودSELECT AVG(Age) as AVGAGE FROM tb_main WHERE age < 25;��

مالحظة .. ~حظ أن الدالة سوف تتجاھل السج·ت الفارغة

� �

: Sum,Max,Min الدوال

�����h �א�n�D��qb−�א���lWS��1��−�4א $وאل�א¡F'ع� �: א �'א ��،�وWSא�3^�ل��i$D�.�U��FD�4�C�n�Dא �� �

SQL Server كودSELECT max(Age) AS mxAGE FROM tb_main;�

� � مالحظة

. اÉستع·م ~ تنس أن بإمكاننا وضع شرط لعملية

� �

Page 436: خطوة بخطوة مع فيجوال بسيك دوت نت

436

: Count الدالة

��D$د�א �` �hو���$��lWSא $א�h `� D� ^3�$��N$د�א�،:� �� �

SQL Server كود

SELECT COUNT(*) FROM Table1;�

� ��hאHא�P� �:و �`��KSא �

SQL Server كودSELECT COUNT(DISTINCT Title) FROM Table1;�

:العالقات

U�i�g,��^�9��1وא��� $NQ وא�ن�،��3ذא� '����� ��lWS����� TSql���א $وאل�א� �KF� �h�. Dو����U�Gא�g��D .�� �� �KPTא�����Fم�א�$+����f'��� �Lא�lWS�U:� �

SQL Server كودSELECT tb_main.Fname, tb_main.lname, Tb_R1.passport, tb_r1.bclass, tb_r1.from FROM tb_main, tb_r1 WHERE tb_main.Number = tb_r1.Number;�

� ��: א ����lWS�Y �7א ��7Q�1وא �7Q�1د��NDא�ن�� ��ªא �Oوق�� �

. ���C�03�K3������N^���53%$ول א���א�K7Lوذ ���g3.�7'م�������Pא���א�$ول:�Cو�9

��iH �7'م�������Pא�^�:�������D�$��53%$ول��� From��N�� �53%$ول��^�C�53�2א�'N . ��Q$�א

��^ ���:53�I��1א�� Q��P��ض�א א�'Sא��9� م����B�Q'��Y �. \��'�h�3א �U��g3�.HC�:��T���tא�$و �� �

DDL:

�����DDL�،�hذ�����Cن� ����K���S�03�K3.'אD$�א���*�§��q�V��9وC�C$�N� z�Tول א�$% � �� �KPTא���� �: وذ �

SQL Server كودCREATE TABLE tb1 ( colum type, colum type,........);�

Page 437: خطوة بخطوة مع فيجوال بسيك دوت نت

437

�� �Tb2 �Y�7 و�9���א�� TNN±�%$...�و�F^�ل��n�Dذ�n�D�'�d�،א��� Name ��53'ع��)*� −

String ( �Iوא� Age ��53'ع Number :�� �

SQL Server كودCREATE TABLE tb1 (name text,age number );��

�F� ��K7א��`��ذن�D�0s$د�א����Name �a7!�h���I�@Fx�...�Y�'.�Y��h �ذن��3ذא� '�HCد���Cن��$د� � ��Y Text'ع�������hא�¤���9�� 03�� �KPTא���� �: وذ �

SQL Server كودCREATE TABLE tb1 (name text(6),age number );�

� �

o����Sא�$אول��z�Tא��U��g��,]���17���I� אغ�!�K�7Q�9�K7Lא�K�< - Null �...�03א�א\^�ل�WS�X�`N و

�MQCא���� :� �

SQL Server كودCREATE TABLE tb1 (name text(6) Not Null,age number );�

5D�3�5ذא�P �: �fWrא�$ول�א W���lz�T�¦���NF.'א �Uא 'א.WS�0א�א P'د�7Q'م ... אfWL و �

SQL Server كودDROP Table tb1;�

$�� !�h�. ����1� �53 CASCADE KPT��s����g^Q$!� و '���ن�WSא�א�$ول���3���� �א �� ������Iא P'د�وذ � �

SQL Server كودDROP Table tb1 CASCADE;��

U�C$�Nوא�ن�� �!�s7'ل א� �z�T�9א����FD�$���� �����C�$7�DC� �hن�א �Oق−� �:�وذ ��Yא�$ول�و.��i$Dא�Rsوא���bC7'ل�Lوא - .

�� �� ����3 ��7Q�1א�D��q�V7'ل��Lא��!�s�0�1א��� :� �

SQL Server كودALTER TABLE tb1 ADD colum type;�

Page 438: خطوة بخطوة مع فيجوال بسيك دوت نت

438

�5Q$Q$%�Y�7��oMN�!�:¢QH���'Sع�א\� د� א�ول�'N �)�: �n^�C−ذ���(�وא ^����א �

SQL Server كودALTER TABLE tb1 ADD birth_Date date,Gender Text;�

� �

�$�lWS وא�نC�fWRN �5�K7 א7L'ل P� 9���N�C�ªدאGender ... �F���o�M���Fj و CASCADE ��Q$R� h�. � ��ل�و%'د��S - א�U−� �� �KPTא���� �: �،�وذ �

SQL Server كودALTER TABLE tb1 DROP gender CASCADE;�

� �

DML�A�IC�i�3�.� �

�Uوא��9� م���R� Tb_Main ،�و�'��f��+$م א�s!��א �` hא�ن� �'�DML�������f�$�אن�����z�%��NFא

�3�� �: ��3א��s!�� �`$ول� C�X�`Nوא��D����3:�،�وא�ن����א ��q�Vא �

SQL Server كودINSERT INTO table VALUES (v1, v2,......);�

� �

���^ 9��H�FN���N�C�ªא ���7وא�$א�وHא�zא �*�VN��t3 D�Yص��'VN ""�و����b�!��gN���KVO،��3�03א�i�Dو�0sאY��¢QHא'� ��. ## t3 D وא �

��� �� �א����א� - �א����א�ول−א �.��:���H�FNא ���7אI−�o��kא��.H�−��F� �−�א Q4$�א� ZPو���−�א �N'אن�−�א

��N� �)�h−��3�/�9وج−�א\'.�0 - �א ��q−א 3� �،� �� �KPTא���� �: وذ �

SQL Server كودInsert into tb_main values(11,'ahmed','gamal',6666666,18,'Cairo','Hammada2091','First Year','','',false,'');�

� �$�� �: KQא �

� �� �KPTא���K`��h������KQ$�� ��3�� �: א ��q�Vא �

Page 439: خطوة بخطوة مع فيجوال بسيك دوت نت

439

SQL Server كودUPDATE table_name SET colum1 = v1 , colum2 = v2 WHERE colum = v;�

� �

��F� �T+*�א W�א�:�א�ول www.vb4arab.com = �وא\'.�X�`N��=250א�ن��K���9�^3א ( Ahmed �) �I9وא ( Gamal ) :�� �

SQL Server كودUpdate tb_main set age=25 , site='www.vb4arab.com' where fname='ahmed' and lname='Gamal';�

� �

5D�3�5ذא�P � �Uא 'א.W+���0 ... אfWL و�� ����3�D��q�b��R� �: ���Bא �

SQL Server كودDELETE FROM table WHERE colum = value;��

]�����fWLن�א'PQن�C�5P>53و��^�C��7�� ���'�0�B�fW��fא�,+�ص�..�,�ط� ��� �Uא\^�ل�אY��H�5א�D��SH�FDC�$Q���5QW �: א �

SQL Server كودDelete from tb_main where age>40;��

5D�3�5ذא�P �: ��S�lWSא �h�Q'�)�K3�� ... �7Q�1%$ول��3 �fW و �

SQL Server كودDELETE * FROM table;�

� �

4.3. edurecd ProStore � Stored Procedure אل ،�h����� �א i$D�.�Uא��� م������� ��B�'Sض�����N � �و Wא ،� א\'s'ع�����a%$א

�:�'���B��Qא���� م����� �� �

SQL Server كودselect [First Name] from employee_info where age>21;�

Page 440: خطوة بخطوة مع فيجوال بسيك دوت نت

440

�� Procedure و���Q��3�'S��Q':�ل�� �KPTא��:� �

SQL Server كودCreate PROCEDURE dbo.GetAge @firstname char(10) output AS SELECT @firstname =[First Name] from Employee_info where age > 21�

� �

��.����Stored Procedureא���אل�C�Alterو�Createא ���1א�ول��− �

��Z�3HאC�hو�אل��− �.C�Outputو����QInput�D'��$Q$:�و��return value��:�7Qא ���1א ^����'�d��n�Dא

�����Bא���� م��−�^ �.א ���1א �

��.����GSWNوא�ن�� Stored Procedure :�!�G�Pو��$Q$%�$��: �lWSא��9� م و��H��+Nא��z�Tوא �

� �

>H���Iא��Q���5D�2��N و��P'ن�א WS�K^3��J�,�2��Nא ، ��NP Excute}����א

Page 441: خطوة بخطوة مع فيجوال بسيك دوت نت

441

���F^�ل <���B�K�%��NPא��9� م�� �3�$Q$R^ �א �Tط�א\�X'�1،�א �KPTא�Z�3H���K�7��� :� �

SQL Server كودALTER PROCEDURE dbo.GetAge @condition int, @firstname char(10) output AS SELECT @firstname =[First Name] from Employee_info where age > @condition�

��<��Z�3H����Q�e��NP'א�53�zא �23��4אو����U�nאل�Lא�lWS�U SQL Serverא����B�W�ON7'م���� ��9� م�

��.�n�Dא���: ���C�@N��9��ن������B�@O��KFD����P3א��9� م� Update אو Delete وC Insert 53�9$� Select �G��،�و

�. ���Bא��9� م�א\�1'�� �� �

4.4. SQL Injection �N��' �א W�Wg!א�S'�א���KB�53�9$�zא��9� م�3��,�Q�� Stored Procedure �i$�3��!��\�ذא����+$م

א�^��:����gن��C����D.� �

Page 442: خطوة بخطوة مع فيجوال بسيك دوت نت

442

�Hא\�و��F+$م�و����א���א\��Q���5D�،ل�'I$ ZONض����Cدא7���������KI'م��������F��K�`א:� �

� � SQL Server كود

string cmd = "select id from Users where nams like '"+textBox1.Text+"' and pass like '"+textBox2.Text+"'";�

� �:�C�����1 '���ن�א����3'%'د�!�'��f��$�א $א ��.���Fא�IDض�ZON ��א �P@�!���5�'د����N`��،�وא�ن����U��3C�

���0��3�Uא N*�א�ول��� �:Cن�,+��3��V.�م�������Pא���zא �insert into Users values(1,'NewUser','1234'(—� �

� ��P����7'ن�����P3:�א $I'ل� �lWS�KI$Q�5א\��i،�و NP:���7'م���WS��!�sא�א\��+$م� �`$ول �،��Uא\��iא

�����NewUser�����.�1234و��!!!�� �� �

������3�U����א Wg!�،�*Nא�����7Rא �Tط��� '�.�م�������Pא����Fא�،�� :Cو�א���53�aذ

a' or 't'='t� �� �

�:�WSא�א\'s'ع�؟��Qن�C�5P>�W �`��א �H�Mא����§�KS� ������P7'م��Qن�C��MQC�5P>:� �

drop table Tablename�–� �� �

�a7!و!!!� �� �

� ~ �!�a7و�O�Stored Procedure��gNP>�9$¤�אq�3� ��3��3�K3����q�\א�KIدא� �k�Iאد���Q� �F�.�Cن�C�U���7�9��g��D�f���N��A�IC��7Q�1���g�FD��NNP>א�،�و$�C�W�ON� ...א

Page 443: خطوة بخطوة مع فيجوال بسيك دوت نت

443

العالقات .4.5

KF����. �0QH�T\�0!�:�אM�� ^3��D�!ول�$%�J�,�2��N : WS�K^3א א P���،�o&'3�K���g��D�KF�Q�t'ن�א

$`��������53א ��Fj�7א��� ،�h�. � ���aא Database Diagram H���I����.� ، Add New ���7 و.�����GRא��g1�Hد�'��t ���U ^3א � .�א�� �KPTא�� :� �

�U� א^�� :� ����ج�� ��� �N�gن�.$�א��'P�� �NSSql Server�_�D�U�$Q�\א�n�D�f��� ����N��Gא ' SQL

Server �NS�53�z$� �: <��NPא �� �

بطرا

http://msdn.microsoft.com/en-us/sqlserver/default.aspx

���4 ���qא�A�IC�i�3د�'�Nوא�ن��...� �� �

Page 444: خطوة بخطوة مع فيجوال بسيك دوت نت

444

الوضع المتصل .5� �

ConnectionStringBuilder التعامل مع .5.1

S�� � �!'Q5j�P �א �אل Wא z�N� � ����VO�� �7Q�� ConnectioString �^א��� �s'Q� �א\^�ل �WSא א��ص����،

�: א��+$א3� � #C كود

SqlConnectionStringBuilder cnStrBuilder = new SqlConnectionStringBuilder(); cnStrBuilder.InitialCatalog = "Employee"; cnStrBuilder.DataSource = @"(local)\SQLEXPRESS"; cnStrBuilder.ConnectTimeout = 30; cnStrBuilder.Password = "124"; cnStrBuilder.UserID = "Ahmed"; SqlConnection cn = new SqlConnection(); cn.ConnectionString = cnStrBuilder.ConnectionString; cn.Open();

� � VB كود

Dim cnStrBuilder As New SqlConnectionStringBuilder() cnStrBuilder.InitialCatalog = "Employee" cnStrBuilder.DataSource = "(local)\SQLEXPRESS" cnStrBuilder.ConnectTimeout = 30 cnStrBuilder.Password = "124" cnStrBuilder.UserID = "Ahmed" Dim cn As New SqlConnection() cn.ConnectionString = cnStrBuilder.ConnectionString cn.Open()

${���� :� �

- InitialCatalog�h����� �Q$R$�א���.��i$Dא � �- DataSource�H��3�$Q$R� h����� � .��i$Dא �

- ConnectTimeout�K%�53א� �א '.��א W��5P>א���qא.: $Q$R� ������hאو� �א i$D�.ل����'b' �א � (�وlz�gא���$ND����F� �. א�f�7Qא �

- Password�h$%ن�و��h����� �. ���3��Fو�i$D�.�Hא �- UserIDن���h����� �. و%$ א���א\��+$م� �i$D�7א �

Page 445: خطوة بخطوة مع فيجوال بسيك دوت نت

445

�NP>��MQC�A�Iא���b�N� : א����א�NS �NS�53��gs¤�א �$�53�$Qא

� � رابط

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnectionstringbuilder_members.aspx

� �

Command التعامل مع الفئة .5.2 ��7N��� ���B��Sא��9� م�א ��t��Command �g3$+ אل ،�h����� ��W�ONא��'ع��53א ��i$D�.�n�D�h���Fא

����jHא�'אع��E ���� :� � −�StoredProcedure� �−�TableDirect� �−�Text� �

3��,��U Command ��F`� iא\^�ل�א �����א��+��N3$אل���Vא��� م���Textא��KPT ��������، ^3�� �� :

� � #C كود

string strSQL = "Select * From Employee_Info"; SqlCommand myCommand = new SqlCommand(strSQL, cn);

� � VB كود

Dim strSQL As String = "Select * From Employee_Info" Dim myCommand As New SqlCommand(strSQL, cn)

KPT �: Cو��Wgא�א � #C كود

SqlCommand testCommand = new SqlCommand(); testCommand.Connection = cn; testCommand.CommandText = strSQL;

� � VB كود

Dim testCommand As New SqlCommand() testCommand.Connection = cn testCommand.CommandText = strSQL

Page 446: خطوة بخطوة مع فيجوال بسيك دوت نت

446

Cz�N� אم$+�����i�,��3��g1�����NF.�W�ON� �: ��ق� ���U�، W�O�Nא 'א.���i$D�¤�NS�0ق�ExecuteReader i$D א �

ExecuteReader� ��'ن�א D�2��N$د�: � ���U oQ���� ��Q� ،�h����� ��53א�� DataReader��:��2��N و�a�Hא�N!�����3�'Sو�،�:�z�7א �7����K��. �3�U�:��Dא �

ExecuteNonQuery�:�K^3�،� bم�و%'د��'א��2א$D�� ���U ������FD�oQ updateאو� Delete �2��N ����א�����،�:3$D�53����F� ��$��W�ON��'Sא' 9�7� א�:��D�f��� �. א �

ExecuteScalar�:א��9� م��K^3�،�$�� ���'ن�א �2��Nو���U ��.� ��Gא�b�*+T� �5D�a7!�5Dא���9א�ول��3'7 ��. xxxxxx א �

ExecuteXmlReade�:�KP,�n�D�:د��D�2وא��N ��2:� �7א�W�ON� XML oQ������Q XmlReader�،�:�zא��N و�a�Hא

��. XmlReader \��!��א\���NP> XML 5D�$Qא �%'ع����دHوس �� �

: Parameterized Command Objects استخدام ال -

53��(�9��F� �5אلD�:�!��N�$��W �)�K ،�!¦ن�א ��7Q�1א ��KF���Q$��7א��9� م SQL Injection א $Hس�אi�1I$��� Wא� ،�Cאم$+����� Parameters 5P��_� ' �n��� �MQא� �NQ$ � �KF� 03�K3���� Storedא��9� م

Procedure�.�� �� �� '����WICא\^�ل�א ���`�� :

� � #C كود

string strSQL = "Select [First Name]+[Last Name] as [Full Name], Age From Employee where ID=" + ID; SqlCommand myCommand = new SqlCommand(strSQL, cn);

� � VB كود

Dim strSQL As String = "Select [First Name]+[Last Name] as [Full Name], Age From Employee where ID=" + ID Dim myCommand As New SqlCommand(strSQL, cn)

��د¨�אل}�5QHد�.� �Nא��$`�� SQL Injection WSאق�ZI�53א،�� 'g�م���(N �א �$PQ�KQ'ن�����+$אم� א �א WאoQ��و� SqlParameter:�

� � #C كود

string sql = string.Format("Select [First Name]+[Last Name] as [Full Name], Age From Employee where ID=@ID");

Page 447: خطوة بخطوة مع فيجوال بسيك دوت نت

447

using(SqlCommand cmd = new SqlCommand(sql, this.sqlCn)) { // Fill params collection. SqlParameter param = new SqlParameter(); param.ParameterName = "@ID"; param.Value = 10; param.SqlDbType = SqlDbType.Int; cmd.Parameters.Add(param); // �NS�KP,�]א��9� م�����B�W�ON� cmd.ExecuteNonQuery(); }

� � VB كود

Dim sql As String = String.Format("Select [First Name]+[Last Name] as [Full Name], Age From Employee where ID=@ID") Using cmd As New SqlCommand(sql, Me.sqlCn) ' Fill params collection. Dim param As New SqlParameter() param.ParameterName = "@ID" param.Value = 10 param.SqlDbType = SqlDbType.Int cmd.Parameters.Add(param) ' �NS�KP,�]א��9� م�����B�W�ON� cmd.ExecuteNonQuery() End Using

����Q�F����NF.��(�9��F���NSHhאZ�3 23��4 �. ������Bא��� م�.�5Fs��g����P��5���NFא �

-� ��א�LאoQ����� ����Sא��9+$אم����j�T $��NQو��Sא�t '�א!Stored Procedure ، ���B� ^3��NsZ ^�����א

� �� �KPTא����N �: א��9� م�א C�U��S��]T�C�tول�دHس� �

SQL Server كود

ALTER PROCEDURE dbo.GetAge @condition int, @firstname char(10) output AS SELECT @firstname=[First Name] from Employee_info where age > @condition�

Page 448: خطوة بخطوة مع فيجوال بسيك دوت نت

448

������g(Or��NF.و GetAge � ��3^ ،�א�ن���Q$�א��$�53��Sz�Dא ���Q�،�23��4ذ�� �KPTא�� :

� � #C كود

using (SqlCommand cmd = new SqlCommand("GetAge", cn)) { cmd.CommandType = CommandType.StoredProcedure; SqlParameter param = new SqlParameter(); param.ParameterName = "@condition"; param.SqlDbType = SqlDbType.Int; param.Value = myAge; param.Direction = ParameterDirection.Input; cmd.Parameters.Add(param); param = new SqlParameter(); param.ParameterName = "@firstname"; param.SqlDbType = SqlDbType.Char; param.Size = 10; param.Direction = ParameterDirection.Output; cmd.Parameters.Add(param); cmd.ExecuteNonQuery(); MessageBox.Show(cmd.Parameters["@firstName"].Value.ToString()); }

� � VB كود

Using cmd As New SqlCommand("GetAge", cn) cmd.CommandType = CommandType.StoredProcedure Dim param As New SqlParameter() param.ParameterName = "@condition" param.SqlDbType = SqlDbType.Int param.Value = myAge param.Direction = ParameterDirection.Input cmd.Parameters.Add(param) param = New SqlParameter() param.ParameterName = "@firstname" param.SqlDbType = SqlDbType.[Char] param.Size = 10 param.Direction = ParameterDirection.Output cmd.Parameters.Add(param) cmd.ExecuteNonQuery() MessageBox.Show(cmd.Parameters("@firstName").Value.ToString()) End Using

Page 449: خطوة بخطوة مع فيجوال بسيك دوت نت

449

9�)��،�.��oQ������NF'ع�אل��F� Command א���(���NS'S��sאZ!9ن�א Text �q�3�oQ������NF.����53و�،q�3ل�و'I$ �. א��وج�MQC� א �

� �

ders Rea Dataالتعامل مع .5.3

53�h����� '�HCد���.�א�izא DataReader �� ��  ��3א �����،�<�5Pא��+$אم�א �KPTא:

� � #C كود

string listItem = ""; while (myDataReader.Read()) { listItem= "Full Name: " + myDataReader["Full Name"].ToString() + " Age: " + myDataReader["Age"].ToString(); listBox1.Items.Add(listItem); }

� � VB كود

Dim listItem As String = "" While myDataReader.Read() listItem = "Full Name: " + myDataReader("Full Name").ToString() + " Age: " + myDataReader("Age").ToString() listBox1.Items.Add(listItem) End While

� ������'د�א $א Read X true �3 ����K7�N���k�z�D$א���K��03��.' ��7א�iz،�وO��U@�א�h `��¤�NSدאم�� �� �... א �`�Kא �

:�zא�.� �א�K7Lא\�אد $Q$Rن���'P�� iz�7א �א �7Q�� myDataReader["Age"] אG��Z ��Uא :F.H� $Q$R��� و

myDataReader[2] ^3 .� �

��MQC�¤�NS��bא�� FieldCount �t ��א��5Fs�i$FDא D��N�1��2j��N$د�وא � � �� �� �

Page 450: خطوة بخطوة مع فيجوال بسيك دوت نت

450

NextResult:

��D9د�iא���zא\'&����YOא���t�B�oQ����53 �zא��� م ��NPe DataReaderאل ^F!� ،�2��N �D9د�iא0QH�T\א :� �

� � #C كود

string strSQL = "Select * From Employee_info;Select * from projects"; SqlCommand myCommand = new SqlCommand(strSQL, cn); do { while (myDataReader.Read()) { for (int i = 0; i < myDataReader.FieldCount; i++) listItem= "Data: " + myDataReader[0].ToString() ; } } while (myDataReader.NextResult());

� � VB كود

Dim strSQL As String = "Select * From Employee_info;Select * from projects" Dim myCommand As New SqlCommand(strSQL, cn) Do While myDataReader.Read() For i As Integer = 0 To myDataReader.FieldCount - 1 listItem = "Data: " + myDataReader(0).ToString() Next End While Loop While myDataReader.NextResult()

6. Data Access Layer

1���h�7א�$���Q�9�،��Qو�0sא P'د�03� �� �Uא 1���7א ��!�s�23��4א ������Q�K��،hא\)QH�N���03��g'�و�h���FDאU��gN3�K��KV! �����f��Q��3�'Sو���VON3��7�� Layers ��%�3א��NP>ع�'s'\א�אWS�5D�$Q�\א��!��\�،

� �� : א �א��aא

� � رابط

http://www.al-asiri.com/ShowRecord.aspx?Action=Open&id=cefa426c-d9e0-4625-a66b-87fd6082ff89

Page 451: خطوة بخطوة مع فيجوال بسيك دوت نت

451

�NS��MQא����1��¤�NSو :

� � رابط

http://vb4arab.com/vb/showthread.php?t=10969

KFDول��RN��،���� �P� Y�Fg3�Y�17����7R'ن �lWS�U data layerא\��h����� ����03�K3.'אD$�א����b�I :� � -�i�3�53��^א���g3א��+$א�iد�Dא .� �-�lH$V3�$Q$����Q�]1Iو%'د��� ���U �7�1 ��א ��$���Q�9�KQא ��$�lWS�n�D�A'��KQא���Uو�،�� 'g�� .� �

U23��4و �1�Q�5ق��2343א�%��53�zא�� �Lא�lWS� �:Q$ ��3�Kאن�������،�h����� ��������Oא�V�9ل���i$D�7א

�א $وאل 53� �D'F�� �S دون�� ����N3� hאZ�3H��� 03� �S$Q�Q�t �א h���F� �א Kو�� KQ$�� �وא fWLوא� ��VلKI$� �����3�e�h� א �. ���O���Uא�V�9ل��7'אD$�א �

KFD��NP> lWS���F� 1����i$����7ق�،�א����g1א��+$אم�����א 4א�23א���i�Sא 7��t'م���lWgא و�7'م����KF �א

�אل lWkא��+�אج� layer � � �!'Q� �MQא� ،� �Sد$��t �א ��4 �א �q �G�� �،� ���F� �א lWk� �7Q������hو$ א�Qو$� �... א ��7Q�1א ^�������Sא ��7Q�1א �

^3�n�D�f���N���� �� ��א�`� 1��5�����O@�א\�n�D���S�O �ل�����UlWk�aאP>�،�YO&'\א�K%�53א����F� א

�7�9��Q$4א�23א� �. א �� � : عمليات فتح واغالق قواعد البيانات -1� �

#C كودprivate SqlConnection cn = new SqlConnection(); public void OpenConnection(string connectionString) { cn.ConnectionString = connectionString; cn.Open(); } public void CloseConnection() { cn.Close(); }

Page 452: خطوة بخطوة مع فيجوال بسيك دوت نت

452

� � VB كود

Private cn As New SqlConnection() Public Sub OpenConnection(ByVal connectionString As String) cn.ConnectionString = connectionString cn.Open() End Sub Public Sub CloseConnection() cn.Close() End Sub

� . الحذف سيناريو عملية - 2

o&'\א�fW�� �אو ،� :����o&'\א�fW� �F��+$م�����N�� ���F� �א lWS�U � ^3�o&'\א�fW�� �אو ،� :F.�� و3�$Q OverLoading KFD�C��و�3^ ��03א��+$אم�3�$�Cאل �9$ ��א ���Fو��$�iאH���Iא��h'א�zא��4אو�א.�Kאو

Enums אن��W� ��U��FgدHوس�����7 אMQ��وא�, .� �

***������Uא �23��4���א� 9��ªאن��lWS�U���Fg3א\� �g3�5א��+$אP>�t �K��KFD��Sא $وאل�אfو�( : &��53�fא

� �� �

#C كودpublic void DeleteEmployee(int id) { string sql = string.Format("Delete from Employee where ID = {0}", id); using(SqlCommand cmd = new SqlCommand(sql, this.sqlCn)) { try { cmd.ExecuteNonQuery(); } catch(SqlException ex) { Exception error = new Exception("some error occures: ", ex); throw error; } } }

Page 453: خطوة بخطوة مع فيجوال بسيك دوت نت

453

public void DeleteEmployee(string name) { string sql = string.Format("Delete from Employee where [First Name] = '{0}'", name); using(SqlCommand cmd = new SqlCommand(sql, this.sqlCn)) { try { cmd.ExecuteNonQuery(); } catch(SqlException ex) { Exception error = new Exception("some error occures: ", ex); throw error; } } } enum deletecondition { morethan=0, lessthan=1, equal=2 } public void DeleteEmployee(int age,deletecondition delcondition) { string sql=""; if(delcondition == deletecondition.morethan) sql = string.Format("Delete from Employee where age > {0}",age); else if(delcondition == deletecondition.lessthan) sql = string.Format("Delete from Employee where age < {0}",age); else sql = string.Format("Delete from Employee where age = {0}",age); using(SqlCommand cmd = new SqlCommand(sql, this.sqlCn)) { try { cmd.ExecuteNonQuery(); } catch(SqlException ex) { Exception error = new Exception("some error occures: ", ex); throw error; }

Page 454: خطوة بخطوة مع فيجوال بسيك دوت نت

454

} }

� � VB كود

Public Sub DeleteEmployee(ByVal id As Integer) Dim sql As String = String.Format("Delete from Employee where ID = '{0}'", id) Using cmd As New SqlCommand(sql, Me.sqlCn) Try cmd.ExecuteNonQuery() Catch ex As SqlException Dim [error] As New Exception("some error occures: ", ex) Throw [error] End Try End Using End Sub Public Sub DeleteEmployee(ByVal name As String) Dim sql As String = String.Format("Delete from Employee where [First Name] = '{0}'", name) Using cmd As New SqlCommand(sql, Me.sqlCn) Try cmd.ExecuteNonQuery() Catch ex As SqlException Dim [error] As New Exception("some error occures: ", ex) Throw [error] End Try End Using End Sub enum deletecondition { morethan=0, lessthan=1, equal=2 } Public Sub DeleteEmployee(ByVal age As Integer, ByVal delcondition As deletecondition) Dim sql As String = "" If delcondition = deletecondition.morethan Then sql = String.Format("Delete from Employee where age > {0}", age) ElseIf delcondition = deletecondition.lessthan Then sql = String.Format("Delete from Employee where age < {0}", age) Else sql = String.Format("Delete from Employee where age = {0}", age) End If

Page 455: خطوة بخطوة مع فيجوال بسيك دوت نت

455

Using cmd As New SqlCommand(sql, Me.sqlCn) Try cmd.ExecuteNonQuery() Catch ex As SqlException Dim [error] As New Exception("some error occures: ", ex) Throw [error] End Try End Using End Sub

: عمليات االضافة والتعديل يوسينار - 3

5P>��7Q�1 �. א ��$H��I�i$���KQא�hאو�א���i$����!�s9ق �ON@�א �

n�D�l4`N���!�s9א����F� ����N �� a7!�Iل�א���9א�ول�وא��Iאد .� �،�iH'V �C��MQC��qن�PQ'ن��ON@�אNQ�KQ$�� ���N�$ل��9$ ��א �.��א���9א�ول�!a7 وא�� ���N3�5P . و

� � #C كود

public void InsertEmployee(string fname, string lname, int age) { // Format and execute SQL statement. string sql = string.Format("Insert Into Employee_info" + "([First Name], [Last Name]) Values" + "('{0}', '{1}')",fname, lname); using(SqlCommand cmd = new SqlCommand(sql, this.sqlCn)) { cmd.ExecuteNonQuery(); } } public void UpdateEmployee(int id, string newFirstName) { string sql = string.Format("Update Employee Set [First Name] = '{0}' Where ID = '{1}'", newFirstName, id); using(SqlCommand cmd = new SqlCommand(sql, this.sqlCn)) { cmd.ExecuteNonQuery(); } }

� �

Page 456: خطوة بخطوة مع فيجوال بسيك دوت نت

456

VB كودPublic Sub InsertEmployee(ByVal fname As String, ByVal lname As String, ByVal age As Integer) ' Format and execute SQL statement. Dim sql As String = String.Format("Insert Into Employee_info" + "([First Name], [Last Name]) Values" + "('{0}', '{1}')", fname, lname) Using cmd As New SqlCommand(sql, Me.sqlCn) cmd.ExecuteNonQuery() End Using End Sub Public Sub UpdateEmployee(ByVal id As Integer, ByVal newFirstName As String) Dim sql As String = String.Format("Update Employee Set [First Name] = '{0}' Where ID = '{1}'", newFirstName, id) Using cmd As New SqlCommand(sql, Me.sqlCn) cmd.ExecuteNonQuery() End Using End Sub �

� �

� �

. عمليات البحث سيناريو - 4

،��R� �א ���FD� 'QH�N���U�z$� ��Kא. Tن��C� �אل����'د ���FD��Sو� ��Sم z�,� �gV7NQ� �7��� ��ن�א $وאل�א

Parameters�U � ��7 ��'�Sql Injection�U�،�a7!���sא\�K��Tא �5D��{�Nאل ��� ������5Pא39^���א�،

�l�NF�����3���1Nא�ن����R� �. �lWS�KLא\����FD��PTא �

5D�i$�  ,+�ص���.� ���r����FD�X�`Nوא�Iא���9א�ول�وא� ID U�G �13���C�n�N��9�،�Y�3 Data

Layer KF�� ��B�n�������P �23��4 ��d�9��Pج� ��h���FD�2343א �g%��d�$.�t �1���hא א��� م� ��Kאi$� . وא

KF���97'م�אوN� Stored Procedure :�� �

� �

SQL Server كود

Page 457: خطوة بخطوة مع فيجوال بسيك دوت نت

457

CREATE PROCEDURE GetFirstNameByID @id int, @fName char(10) output AS SELECT @fName=[First Name] from Employee_info where ID > @id�

�����oQو7�����53'م��� �KPTא����R� : �א $א ��א������F����bא

� � #C كود

public string SelectName(int id) { using (SqlCommand cmd = new SqlCommand("GetFirstNameByID", cn)) { cmd.CommandType = CommandType.StoredProcedure; SqlParameter param = new SqlParameter(); param.ParameterName = "@id"; param.SqlDbType = SqlDbType.Int; param.Value = id; param.Direction = ParameterDirection.Input; cmd.Parameters.Add(param); param = new SqlParameter(); param.ParameterName = "@fName"; param.SqlDbType = SqlDbType.Char; param.Size = 10; param.Direction = ParameterDirection.Output; cmd.Parameters.Add(param); cmd.ExecuteNonQuery(); return cmd.Parameters["@fName"].Value.ToString(); } return carPetName; }

� � VB كود

Public Function SelectName(ByVal id As Integer) As String Using cmd As New SqlCommand("GetFirstNameByID", cn) cmd.CommandType = CommandType.StoredProcedure Dim param As New SqlParameter() param.ParameterName = "@id" param.SqlDbType = SqlDbType.Int param.Value = id param.Direction = ParameterDirection.Input cmd.Parameters.Add(param)

Page 458: خطوة بخطوة مع فيجوال بسيك دوت نت

458

param = New SqlParameter() param.ParameterName = "@fName" param.SqlDbType = SqlDbType.Char param.Size = 10 param.Direction = ParameterDirection.Output cmd.Parameters.Add(param) cmd.ExecuteNonQuery() Return cmd.Parameters("@fName").Value.ToString() End Using� End Function

9��KV!��NP>��7אل�-- DataLayer U�n�� dll א��9+$אم��U�،���� �FMن���03��g��qTא�^��1��53���VON3�7�9 �JO �א �א!Zאض�אن n�Dو Class 7�1 h����� �א � DataLayer ��9א� KF� myDataLayer ، ����1� و

: �K^3����FDא�K��fWLא\�K^3�5Q�1��'S��N3�X'�1א���

� � #C كود

myDataLayer example=new myDataLayer(); example.OpenConnection(myconnectionstring); example.DeleteEmployee(10); example.DeleteEmployee("Ahmed");

� � VB كود

Dim example As New myDataLayer() example.OpenConnection(myconnectionstring) example.DeleteEmployee(10) example.DeleteEmployee("Ahmed")

a7!و !!!

�����' �7 .������אدdll �������U��S و�ON@�א N)�م�Q�1 �. ���.������+$אON���g3@�א �

� ،��(�9�' �7Q�1 ������lWg� hא ��$��5D.'אD$�א ���Kא ��.������FD:����$א ���א\�234 ��QH�N'�א �23��4وbא �،�sوC�iH'V��K��T\א�¤Hن��$א�P39�����bא�� �� ���Cو��sو��bC�KF� . ���Fאن��7����א

� �

Page 459: خطوة بخطوة مع فيجوال بسيك دوت نت

459

7. Asynchronous Data Access

53� �N�Ne� �7Q������ول���RN�� ��jא��� lWS�U i$D�KFD�0N\��.' �����O��U�h@�א �א $Dא'.�n�D�h���FD���PT\و�03אن�א�،�XH�M� وא W�s'3�'S'ع�دDisconnected ��N�H ��'א%�iH'V���Ngא��U�4א '�0sא\KVON א

� א �7دم�،�� ��א ���X�%�،���Qא\^�ل�א�`� �: ��9א��X�`N���Nא�lWS�U�KLא �� �

#C كودSqlConnection cn = new SqlConnection(); cn.ConnectionString = @"Data Source=(local)\SQLEXPRESS;Integrated Security=SSPI;" + "Initial Catalog=AutoLot;Asynchronous Processing=true"; cn.Open();

� � VB كود

Dim cn As New SqlConnection() cn.ConnectionString = "Data Source=(local)\SQLEXPRESS;Integrated Security=SSPI;" + "Initial Catalog=AutoLot;Asynchronous Processing=true" cn.Open()

oQ�����S� �g�� �NF.� i'1Iول�C 0s' �U ConnectioStringאل Asynchronous Processing=true א

�NR�b��7אQ�1 �� ��lWgא�� �: .�د�n�D�5QHא�O��9د�53�iא $وאل�א �� �

BeginExecuteReader()و��EndExecuteReader()� �BeginExecuteNonQuery()و��EndExecuteNonQuery()� �

BeginExecuteXmlReader()و��EndExecuteXmlReader()� �

n�Dא�ن��X�`N� BeginExecuteReader و EndExecuteReader א��9� م�א�و�����B�I]���C$�Nو��،@F� ^3אن�'� :� �

� � #C كود

string strSQL = "WaitFor Delay '00:00:05';Select * From Employee_info"; SqlCommand myCommand = new SqlCommand(strSQL, cn);

� � VB كود

Dim strSQL As String = "WaitFor Delay '00:00:05';Select * From Employee_info"

Page 460: خطوة بخطوة مع فيجوال بسيك دوت نت

460

Dim myCommand As New SqlCommand(strSQL, cn)

ON7'م���N���NS�I��$Q���n�D�A�IC�h���FD�W� :

� � #C كود

IAsyncResult itfAsynch; itfAsynch = myCommand.BeginExecuteReader(CommandBehavior.CloseConnection);

� � VB كود

Dim itfAsynch As IAsyncResult itfAsynch = myCommand.BeginExecuteReader(CommandBehavior.CloseConnection)

���nא�W�ON��53�z�g��9א ^�Q$و�h���F� ���W�ON���א

� � #C كود

while (!itfAsynch.IsCompleted) { // ^3��,p3��F�.��q� . Thread.Sleep(1000); }

� � VB كود

While Not itfAsynch.IsCompleted ' ^3��,p3��F�.��q� . Thread.Sleep(1000) End While

� � . א ���Wg!��7א��c�Qא���z�gא ��W�ONא�ول�،�א�ن��7N'م����W�ONא �����Fא �53��N%�I��N�C�� Loop �S$Q���tאلא�ن�{

� � #C كود

SqlDataReader myDataReader = myCommand.EndExecuteReader(itfAsynch); while (myDataReader.Read()) { MessageBox.Show(myDataReader[0].ToString()); } myDataReader.Close();

� � VB كود

Page 461: خطوة بخطوة مع فيجوال بسيك دوت نت

461

Dim myDataReader As SqlDataReader = myCommand.EndExecuteReader(itfAsynch) While myDataReader.Read() MessageBox.Show(myDataReader(0).ToString()) End While myDataReader.Close()

� �

8. Transactions

���F� �S�$Q$,�H�V�I'�و%'د���53��D'Fא �C�$��9�h���Fن������'C��Qو���'.��Q'��o،�א\^�ل� ����lWS�oQא

K�FD�53���PN� �. 1K�FD����2א�,�lWk��gא ��h���FD��S����Fא ��KQ'Rא �

�����C�$��9�hن��P'ن Wא�1I'א�hא ��U�KF.'אD$�א � �� �KPTא�� :� � -��GR�500�K�FD�X����53�H9�1دو .� ����500�K�FD�XאQ$אع��-�U�H9�2دو .� �

'���eא �����Fא�و��و_�����א �����Fא ^������17�9ع و���Sن�א �����Fن�nN�}�،��Q'ل�3^ � �$�9אن�������V�9א

���FD�א�fW�73�'ل�،� Wא��$��9אن����Qא�F�Dد�א �C�Y���Fو�� ������gN3دون�א��A�IوWg! �����f��Q��3�'Sא��

roll back.�� � ���KF �ذא �NF. transaction h����� �lWS�oQ�������� DBMS �n�Dא¡�53��D'Fא ���U�h���F)�م�.��i$Dא

�Q'���SW�ONم��$Dאو���Q'���SW�ON����Q���r�i$��. ,�KPو�$�iوא �

�JO �א �S� �NQ$ � ���F� �א lWS� 5D� � �א\�pو �JO �א���SqlTransaction z א ���ل 5Fs� iא\'%'د

System.Data.SqlClient A�IC�h�J!�¤�NS�، z��C���5ل�Fs����F� 1�����lWSא���gNP> .net K^3��MQא :

System.EnterpriseServices �:h��'P3�03ل��V�9א��JO �lWS��Nא����� COM+ �lWS�U��D$ א 7��t$م� ��Nא

���F� �. א �

System.Transactions�: �JO 1����D$��h�7אل ����� �lWS��Nא��z�N� transactions.�� �

WCFو� WWF : ���3��د¨�אل ���S��NNPeن�א ��JOن�1��53 transaction �MQא .� �

$Dא'.��(��U�n�� oQ�����Q���5D��Fg\א�lWg��7م�� �������NP>�hא 7Q'م���Stored Procedure�KF א

Page 462: خطوة بخطوة مع فيجوال بسيك دوت نت

462

transactions��Q���5D�TRANSACTIONو� ROLLBACKو��COMMIT 53ع�'N �$WS�U�zא�א ،�<��NPא

S�N :� �� �

رابط

http://msdn.microsoft.com/en-us/library/ms187844.aspx

U ADO.net �JO �א �NQ$ DBTransaction �g%א' �א ��1�� t وא W��IDbTransaction interface א ��'�d��n�Dא $وאل�א�� ��j����א :

� � #C كود

public interface IDbTransaction : IDisposable { IDbConnection Connection { get; } IsolationLevel IsolationLevel { get; } void Commit(); void Rollback(); }

� � VB كود

Public Interface IDbTransaction Inherits IDisposable ReadOnly Property Connection() As IDbConnection ReadOnly Property IsolationLevel() As IsolationLevel Sub Commit() Sub Rollback() End Interface

��Nאل�o�MQ SqlTransaction �S�i$Q$%�� �� Save دא���U��g� ����Q��17��ªOא �%'ع����N ������t وא U�KTOא �K3�P ������F� '���ن��NS¤�א%�א�53�zא �C����Fو−א�eم�א ������F$ل�א �%'ع��Uא� K� א ��3�n�D����Fא

،����F� 1�����lWSא��n�D3^�ل��a�א� �n�D�'�dאض�و%'د�%$ول�Z!א�'S�)�K�F� )��א\��£�א\'دع�−א���א���F�7���3'م��$NDو T ������F�7'م�����I�����X����53�KQ'�� �� : �KPא

� � #C كود

SqlCommand cmdGet = new SqlCommand("update customers set total=total-" + totalmoney.ToString() + " where ID" + custID.ToString(), cn); cmdSelect.ExecuteNonQuery(); SqlCommand cmdSet = new SqlCommand("update customers set total=total+" + totalmoney.ToString() + " where ID" + SuppID.ToString(), cn); cmdSelect.ExecuteNonQuery();

Page 463: خطوة بخطوة مع فيجوال بسيك دوت نت

463

� � VB كود

Dim cmdGet As New SqlCommand("update customers set total=total-" + totalmoney.ToString() + " where ID" + custID.ToString(), cn) cmdSelect.ExecuteNonQuery() Dim cmdSet As New SqlCommand("update customers set total=total+" + totalmoney.ToString() + " where ID" + SuppID.ToString(), cn) cmdSelect.ExecuteNonQuery()

� �

���F� ����H)�م�.� �lWS�UאIول�א�RNא��W �،����F� �����i$D ��N�]��hو�������Gن�.$��o.'�Qא���zא ^�����53א א�FgN3�i$�3��,���WONN� i �א �O��U�Y���F@�א '.��،�و '�_��W�ON����Qوא�A�Iא��z�q �. �����א �

#C كودSqlCommand cmdGet = new SqlCommand("update customers set total=total-" + totalmoney.ToString() + " where ID" + custID.ToString(), cn); SqlCommand cmdSet = new SqlCommand("update customers set total=total+" + totalmoney.ToString() + " where ID" + SuppID.ToString(), cn); SqlTransaction sqltr = null; try { sqltr = sqlCn.BeginTransaction(); cmdGet.Transaction = sqltr; cmdSet.Transaction = sqltr; cmdGet.ExecuteNonQuery(); cmdSet.ExecuteNonQuery(); if (throwEx) { throw new ApplicationException("all operation canceld, some errors occures"); } sqltr.Commit(); } catch (Exception ex) { MessageBox.Show(ex.Message); tx.Rollback(); } }

� � VB كود

Dim cmdGet As New SqlCommand("update customers set total=total-" + totalmoney.ToString() + " where ID" + custID.ToString(), cn)

Page 464: خطوة بخطوة مع فيجوال بسيك دوت نت

464

Dim cmdSet As New SqlCommand("update customers set total=total+" + totalmoney.ToString() + " where ID" + SuppID.ToString(), cn) Dim sqltr As SqlTransaction = Nothing Try sqltr = sqlCn.BeginTransaction() cmdGet.Transaction = sqltr cmdSet.Transaction = sqltr cmdGet.ExecuteNonQuery() cmdSet.ExecuteNonQuery() If throwEx Then Throw New ApplicationException("all operation canceld, some errors occures") End If sqltr.Commit() Catch ex As Exception MessageBox.Show(ex.Message) tx.Rollback() End Try

9�)��،��7'م���$����FD�zאل��F� transaction $��5�!�]1I�C�E$d�_��3و�،�W�ONא�������W �U�KIא �Tط�و� �$و�Eא�!�]1I�7N'م���Commit �3 دא�� ���U��3C�،��FSد�F�Dوא�Y���F� ��W�ONא throw Exception

��� i�,��3� �N�7NQ�W �א $א � Catch وא z�D$����� ¤�NS� 7N'م rollback 53 �t א�hא�]� �א 0�B� z�q א%�Kא��$� .� �

�$و�WSא�א\^�ل '�����N'د�}������O����!��\�:�F�.�K�%�X�%�،� throwEx=true�E$d��3�X�%و .� �

�K�F� 3��£�א��F�.א�ن���`$�אن��� �^3����%�' 1 ^3� �����^ ��D$م�و%'د��U�]1Iא����Fא���U��3C�،���]���_

53�iא]$د���FP �. 1�K�FD����2א\��£�.�K�FD�53��g�7����$ !��`$�אن�א �� �� �

مالحظة

� ����،�KPT PQ�5'ن��)�م�אQ9$אع�وא Wg��f�Vא�א��Q$����7א���1��U ول�אو�$%�¤�NSن�'P���iد�� ��U�KאK�FD�KP �lא¡�א�h���F� . �53אQ$אع�و�f�bو��GRوI !: א�^���53%$ول�'�d��n�Dא

� �

Page 465: خطوة بخطوة مع فيجوال بسيك دوت نت

465

الوضع المنفصل .9� �

��N7��U��N^Q$���V�.��7א��� �א �Nو�Hد�U ADO.net KV�\�0אs' وS'�א W��5D connected layer��]TNQא��p����r�h����� 3$7:� H ��Nא�3��1��,���N���iو��i$D�.�Yא��W �،�א���zא ^����א ��(L��g�!��� Q$���0�B

����P3א��S���N7� 1����א '�0sא\�lWS KVONא� disconnected layer �i$D�.�03�K3��� ���� ��F�Q�W وאh����� ������53��D'F hא �h�JOو���K7�����53!��א ��$�i�3�h Qوא�$�U���iא Wא�����Q���5D�i א . .��i$Dא

KFD� �Q��� 5D�� �ذ ��Q DataAdapter ن'PQ z�Tא�� ��� �و53 ،� 23��4 ������hو��Yא �א i$D�.�Y�� aو��

DataSet�����g��D�KF� ��������Q hא �. א�i$D�.����A�IC�i�3��k��Hא �

�.DataColumn و DataRow��'�DataTable h�Nj���n�D د�C�n�D53�DataSet $D ��'�אل �

O���S�DataSet �i$D�.��g אن������W[ن�WSא�א '��Q�9�0sم�!�:�א��'ع��53א�V�9ل��h������i$D�.�03،�!�ل ��7i$D�7ل���Vא��دون�א��Qא$� Wא��N'א�KbدHو��U��Nא�h����� �Q�g��U�A�IC�i�3��g� WSא��������h!����������'د��

���7 .א

� �

DataSet ـال .9.1

��Q$,�H�V�I�� DataSet iH'b�5D�iH$�אلD��S �iא��W N)�م�.'א�h������$Dو �U�5Pא�−��.p3��−�h�Q'�[א�،��S��JO �: א��������lWkא �

� : א �h�JOא������ �

DataTableCollection:� i$D�7 �. א�$אول��lWS�Uא �DataRelationCollection�:�. � �. ��Y��hא�$אول�א\+���Oא �

PropertyCollection�:אل�����*j�VI��!�s9 DataSet .� �

�: א�j�V*�א������ �

Page 466: خطوة بخطوة مع فيجوال بسيك دوت نت

466

DataSetName�:���9א .� �

RemotingFormat�:�KFD��g����Q�t � serialize �،�h�Q'�RF�Q$$�א ��7Q�1א� �K^3 binary אو XML l�. אو�� �

�: א $وאل�א������ �

AcceptChanges()�:אل��n�D��e�t א�hא�q� 1����א� DataSet ��i�3��I��WN3 KFD AcceptChanges

h����� �. �i$D�.�����kא �RejectChanges()� :�0�B� z�q �אل א n�D� �e� t �א h Q$�� �DataSet KFD א �� i�3� �I�� WN3

AcceptChanges��k .� �Clear()�:אل��h�Q'�)��!�����3 DataSet .� �Clone()�:�¢��KP�kא� structure h�. � �������g�!��}�hא�$אول�وא �i$D�7א � �Copy()�:�����!�sא�KP�kא�¢�� h����� �. �0�Bא �

GetChanges()�:�h����� �i$D�7א���$��t א�hא�q� KFD���i�3��I��WN3 AcceptChanges 3��!����!��א

�k .� �HasChanges()� :��F�. Boolean �F�!� $Q$� ����� �KFDאذא �� i�3� �I�� WN3� �e� $.� hא�q�� ¤�NS�

AcceptChanges 9אم� .� �Merge()�:i$D�23د DataSet .�� �

ReadXml()و� WriteXml() : KP,�n�D�iz�7א � DataSet אل XML 53 א �����Pوא �

: DataSet انشاء

z�Tא���NP> DataSet �7Q���a�د����'P � ��Q���5Dא�� �KPTא�� :

� � #C كود

DataSet empDataSet = new DataSet("My Employee");

� � VB كود

Dim empDataSet as DataSet = New DataSet("My Employee")

Page 467: خطوة بخطوة مع فيجوال بسيك دوت نت

467

hدوאC��Q���5D��Sz�Tא���NP>و�C .net hא�دوא��Fj�.�53�، Data $`�� DataSet �� ��g(و����g�R����.� �� �KPTא���i�,�� : א\��©�3

� �

DataTables التعامل مع .9.2

�7�9�'�R���W �: �f'Ob�n�Dو�i$FDC،�א�j�V*�وא ���b�Nא������� :��S א�$ول�S'�א ���VNא�����9وא �

Copy()�:א�$ول��KP�S�¢�� .� �DataSet�:אل� DataSet D�'�d�W �. WS�n� Tableא�אلא �

PrimaryKey�:אل� PrimaryKey א�א�$ولWk .� �TableName�:א���א�$ول� .� �

ParentRelations�:�d�t �. 'WS��gQא�א�$ول�א � .��hא �

able DataTانشاء .9.3 � �

#C كودDataTable EmployeeTable=new DataTable(); EmployeeTable.PrimaryKey = new DataColumn[] { EmployeeTable.Columns[0] };

� � VB كود

Dim EmployeeTable As New DataTable()

Page 468: خطوة بخطوة مع فيجوال بسيك دوت نت

468

EmployeeTable.PrimaryKey = New DataColumn() {EmployeeTable.Columns(0)}

: DataSet إلى DataTable اضافة

� � #C كود

empDataSet.Tables.Add(EmployeeTable);

� � VB كود

empDataSet.Tables.Add(EmployeeTable)

DataColumns التعامل مع .9.4

،�h����� �א i$D�.�U�$��FD'د�وא �JO �א lWS�K^e �53אل� �D'Fن��¦!� �I��nN�}و DataColumns KPT�

DataTable i$D�.�KP�S�n�D�'�d �S��JO ������h،�א\�h��'Pא��������lWkא �: א �� �

��bא��� �ob' �א �AllowDBNull� �Q$R$�א�n�Dد�'F� �א ���v�F�$م�א��'א��z���א WS�U���7א �F�7 א

Null� �AutoIncrement� �

AutoIncrementSeed� �AutoIncrementStep� �

lWS� � � ���� ��F�� �j�7��� ��.��� ��b�I� KFD� E ^ �א *j�Vא�5D� �N�Hدو� �Qא$��U� �S�NRsאو SQL Server �$Q$R� � �و���+$م ،

n�D�i�3�K��03�iد�Q� �$א��Qو$73א�Hא �א G��Z א�����bو�$��17��$Qא �Caption� �א���א �F'د� �

DataType� �����h �'ع� �א �DefaultValue� ���7א7L'ل�WS�Uא�א �F'د����sאZ!9א��F�7 �א �

Table� �0 :�WSא�א �F'د DataTable�Q$$�אل���Q�W �א �Unique� �$د��'ن� Hא�P�� �����.����F�7 ��lWS� Primary keyא �

: : DataColumns انشاء

W ZONض�א��h������i$D�.�z�T��'��n�Dא �.��א �9��Fg!��F� �jH�v��O3�'S���وא��3C�،��j�7�����.����MQא���9وא

��.�C�n�Dن��Q'�d א��KP,�'Sא�WSن�'P���،�iא�א�$ول���WS�U�i$FD :� �

Page 469: خطوة بخطوة مع فيجوال بسيك دوت نت

469

#C كودDataColumn EmpIDColumn = new DataColumn("ID", typeof(int)); EmpIDColumn.Caption = "Employee ID"; EmpIDColumn.ReadOnly = true; EmpIDColumn.AllowDBNull = false; EmpIDColumn.AutoIncrement=true; EmpIDColumn.AutoIncrementSeed=1; EmpIDColumn.AutoIncrementStep =1; EmpIDColumn.Unique = true; DataColumn EmpNameColumn = new DataColumn("Name", typeof(string)); EmpNameColumn.Caption = "Employee Name"; DataColumn EmpAgeColumn = new DataColumn("Age", typeof(int)); EmpAgeColumn.Caption = "Employee Age";

� � VB كود

Dim EmpIDColumn As New DataColumn("ID", GetType(Integer)) EmpIDColumn.Caption = "Employee ID" EmpIDColumn.[ReadOnly] = True EmpIDColumn.AllowDBNull = False EmpIDColumn.AutoIncrement = True EmpIDColumn.AutoIncrementSeed = 1 EmpIDColumn.AutoIncrementStep = 1 EmpIDColumn.Unique = True Dim EmpNameColumn As New DataColumn("Name", GetType(String)) EmpNameColumn.Caption = "Employee Name" Dim EmpAgeColumn As New DataColumn("Age", GetType(Integer)) EmpAgeColumn.Caption = "Employee Age"

� DataTable و�����gO�M�����53אل�� �KPTא�� :

� � #C كود

EmployeeTable.Columns.AddRange(new DataColumn[] { EmpIDColumn, EmpNameColumn , EmpAgeColumn });

� � VB كود

EmployeeTable.Columns.AddRange(New DataColumn() {EmpIDColumn, EmpNameColumn, EmpAgeColumn})

� �

Page 470: خطوة بخطوة مع فيجوال بسيك دوت نت

470

DataRows العمل مع .9.5

�JO ����03�K3א �f'OV،�א\�h��'Pא ��j�����lWS�*�§ �lWkא���S��JO �: א �

� ���bא��� �ob' �א �

ItemArray� ��!'OV3�KP,�n�D�oV �objects �53אل WS�h�������!�� arrayא�א �Table� �oV �א�$ول�א W�'�d�WS�n�Dא�א �

AcceptChanges()� ����1� oV א�hא WS�n�D��e�tא�א�q� �א �RejectChanges()� ��e�t א�hא�q� ����i�3 א �z�qא �I��WN3�oV �א א��$WS�n�Dz�Dא

AcceptChanges()��g�!� �BeginEdit()� �z$� oV �����FDא ��$WS�n�D�KQא�א �

EndEdit()� �h Q$�� �א�����FD�z�gא ��$�KQو��ªOא �CancelEdit() KQ$�� �א ����FD�z�qא �

Delete() z�D$א���$ND�oV �WS�fWא�א AcceptChanges()� �IsNull() �S�KSو�oV �9 אم FD��F�.��!��\ null'د�WS�U��3א�א �

RowState אل� 53� �g�zא�.� 5P>� t �وא oV �א � �� enum nF�\א

DataRowState� �

'�d�W ��−��DataRowState–�وא�� : ��n�Dא ���7א

� �

Page 471: خطوة بخطوة مع فيجوال بسيك دوت نت

471

: DataRows انشاء

z�T�5א�P>�9 DataRows ]1I�]TNQ�f'���1� 3��,�WS�K^3�،�iא�א :

� � #C كود

DataRow r = new DataRow();

� � VB كود

Dim r As DataRow = new DataRow();

z�T�53�$��9�5א�P DataRow 53��+���z�T�9א\^�ل�� �WSא ووDataRow ���.�0s ��53�+���53א�$ول�،���NF.�W ���Gא�$ول�א��g�!�f'OV �$א��Q���א . ��U�:�Fא

� � #C كود

DataRow EmpRow = EmployeeTable.NewRow(); EmpRow["Name"] = "Ahmed Gamal"; EmpRow["Age"] = 22; EmployeeTable.Rows.Add(EmpRow); EmpRow = EmployeeTable.NewRow(); EmpRow[1] = "Ahmed Essawy"; EmpRow[2] = 23; EmployeeTable.Rows.Add(EmpRow);

� � VB كود

Dim EmpRow As DataRow = EmployeeTable.NewRow() EmpRow("Name") = "Ahmed Gamal" EmpRow("Age") = 22 EmployeeTable.Rows.Add(EmpRow) EmpRow = EmployeeTable.NewRow() EmpRow(1) = "Ahmed Essawy" EmpRow(2) = 23 EmployeeTable.Rows.Add(EmpRow)

� ��(�9�' K7L�0אM��_��Nא� ID ل��:�)�א�'b' ��א�و��!���gא�Lאن�א��F��،��j�7�����.��� ��37'ل������9אR�

��. Index א ^�����!4.��אل �� �ومعرفة الصفوف DataSet الجداول في قاعدة البيانات معرفة كل: مثال شامل -

: واألعمدة

Page 472: خطوة بخطوة مع فيجوال بسيك دوت نت

472

� � #C كود

Text1.Text=""; foreach (DataTable dt in empDataSet.Tables) { Text1.Text+=dt.TableName + ":\n\r"; for (int curCol = 0; curCol < dt.Columns.Count; curCol++) { Text1.Text+= (curCol+1).ToString() + dt.Columns[curCol].ColumnName+"\n\r"; } Text1.Text="Rows: \n\r"; for (int curRow = 0; curRow < dt.Rows.Count; curRow++) { for (int curCol = 0; curCol < dt.Columns.Count; curCol++) { Text1.Text+= dt.Rows[curRow][curCol].ToString() + " - "; } } }

� � VB كود

Text1.Text = "" For Each dt As DataTable In empDataSet.Tables Text1.Text += dt.TableName + ":" & Chr(10) & "" & Chr(13) & "" For curCol As Integer = 0 To dt.Columns.Count - 1 Text1.Text += (curCol + 1).ToString() + dt.Columns(curCol).ColumnName + "" & Chr(10) & "" & Chr(13) & "" Next Text1.Text = "Rows: " & Chr(10) & "" & Chr(13) & "" For curRow As Integer = 0 To dt.Rows.Count - 1 For curCol As Integer = 0 To dt.Columns.Count - 1 Text1.Text += dt.Rows(curRow)(curCol).ToString() + " - " Next Next Next

لقراءة البيانات منder DataTableReaاستخدام .9.7DataTable

� � #C كود

Text1.Text=""; DataTableReader dtReader = dt.CreateDataReader();

Page 473: خطوة بخطوة مع فيجوال بسيك دوت نت

473

while (dtReader.Read()) { for (int i = 0; i < dtReader.FieldCount; i++) { Text1.Text+= dtReader.GetValue(i).ToString(); } }

� � VB كود

Text1.Text = "" Dim dtReader As DataTableReader = dt.CreateDataReader() While dtReader.Read() For i As Integer = 0 To dtReader.FieldCount - 1 Text1.Text += dtReader.GetValue(i).ToString() Next End While

� �

XML إلى Serializing عمل .10 � �

#C كودEmpDataSet.WriteXml("Employee.xml");

� � VB كود

EmpDataSet.WriteXml("Employee.xml")

@P� : Cو�א

� � #C كود

EmpDataSet.ReadXml("Employee.xml");

� � VB كود

EmpDataSet.ReadXml("Employee.xml")

o�\ن�����2א'P�� Employee.xml ��Q�7��KPT �: �Wgא�א � كود

<?xml version="1.0" standalone="yes"?> <Employee_XML>

Page 474: خطوة بخطوة مع فيجوال بسيك دوت نت

474

<Employee> <ID>1</ID> <Name>Ahmed Gamal</Name> <Age>22</Age> </Employee> <Employee> <ID>2</ID> <Name>Ahmed Essawy</Name> <Age>23</Age> </Employee> </Employee_XML>

DataGrid استخدام ال .11

T�����NF.�W DataGridView وو��N�s!�:�%$ول�א\'&�GR��'S����D��3�K��،�YOאدא�T3�U�7����lz� iو��NDא

h�5א�دوאFs�53 � �� �KPTא���iא\'%'د :

�3�K� �Q���5D� H$V\���h����� �א i$D�.�a�H� 'S� �N��D Choose DataSource �!�sא� H���I��� �.� ، New

DataSource��!�s�0א\��©�،�א�������hא���N���b و7�����53'م���DataBase i$D�.�H���I ،�و.����� �. א �

مالحظة

�אل 5D� �rא� 53� 9$�� iد�� �א U ConnectionString KF��� �אل DataSource א.'م وא����ض

ConnectionString א.'م����، q ���gj�

� ��g(��،س�H'א����$ ,�,��§�H���I���¤4א�$ول�Cو����Bא��9� م�א �t ��$�א���z�gא �T,��א���H���I����bא

�وS'�%$ول�א\'&�YO،�و3�U^�ل�9�����X�`N��X�`Nא�H���I%$ول�3��,�i �'د�C��kن��)�U��gא�$ول�،��B�H���Iא��� م א .� �

Page 475: خطوة بخطوة مع فيجوال بسيك دوت نت

475

: ��P'ن�א WS�K^3��J�,�2��Nא

0�1 ���$�KQوא�s9!���53א�$ول ����b�O �. <��NPא�����א �

KQ$���X�`Nא�ن��a���� א���9א�ول���k�t ������A'��hא ��D���Q�9���r��Rض�א� 1���,�ط�N��،א�$%�=��53אل א��� ،�*�� 0��3�U� �א��Add Query ��B�G אdataGrid ZI א�ول�א\'%'د א��� م� و���53� �� �� :

� �

Page 476: خطوة بخطوة مع فيجوال بسيك دوت نت

476

ª� �� 2j��N ��،�%��������Xא���9���nא ��Q�gNو,�S$�א�� �KPTא���n�Dא��U��,�,�H'g& :

KS ؟�K� Q'%$�א�WPS�53�Kgא�

DataAdapter استخدام .12

$,�������oQ������.�،�i$Q DataAdapter � �� �PTل�א�� :

� � #C كود

string connectionString = @"Data Source=AHMED-PC\SQLEXPRESS;Initial Catalog=Employee;Integrated Security=True;Pooling=False"; DataSet ds = new DataSet("Employee"); SqlDataAdapter dAdapt = new SqlDataAdapter("Select * From Employee_info", connectionString); dAdapt.Fill(ds, "Employee_info");

� � VB كود

Dim connectionString As String = "Data Source=AHMED-PC\SQLEXPRESS;Initial Catalog=Employee;Integrated Security=True;Pooling=False" Dim ds As New DataSet("Employee") Dim dAdapt As New SqlDataAdapter("Select * From Employee_info", connectionString) dAdapt.Fill(ds, "Employee_info")

� �

Page 477: خطوة بخطوة مع فيجوال بسيك دوت نت

477

� �� �� �

� �� �� �� �� �� �� �� �

LINQ � �� �

� �� �� �� �� �� �� �� �� �� �� �� �� �

�03�A�IC�i�3د�'�N�LINQ���O��+\א�h����� �.،��lWSא\��03��g�3�������gN��i.'אD$�א �

الباب

18

Page 478: خطوة بخطوة مع فيجوال بسيك دوت نت

478

Page 479: خطوة بخطوة مع فيجوال بسيك دوت نت

479

مقدمة .1� �

_�D�U�7ط�N ADO.net ��N7��n�D�f���N ��$�אن����!��n�D��N���א�Hو$ �z�%�، Language Integratedא

Queryא������H�V�Iא�f��Q��3אو� LINQ 53�i$Q$%���N7���Sو�، ��f$g���!'و��PQ�3س������Hد�U��NOא����F�g�!� �PR� �א 5P>� �Q'.� h�3 �א��� z�N���� ���B� $��'��� �א����osذ ،� 'Qد'��� �!�`'אل �J��� �I ل 53

��D'��5P���Fg3و א��9� م�C�h������i$D�.ن����z3�:��'א�K3�����W ������hא Cو��H$V3 XML File �o�3.'אD$�א�V� :! Iو�C�K��א��o�3אو� .� �

K LINQ �n�D�f��� �: C%�א�E �S��gjא�'אع��jH������RNول�א �

1−�LINQ to SQL � �

2−�LINQ to XML � �

3−�LINQ to Objects� �

��C'אع a��C ع'�� 53� q�3���� i�,��3� �א��9� م �S� �Array l�N א��9� م�,� W �א ZONض�א\^�ل� ، �U����N�3$73 LINQ � �� ��i$D�KدHوس��� �KPTא. :� �

كودfrom d in developers where d.Language =="C#" select d.Name;

�KPT ����g��P���N��t � O���S�lWS����B��gא��9� م�א�� �: א �

كودselect name from developers where language=’C#’

���� و �5Pא�ن�_���$ H�b�K�� ،� �g��D�lWSא��9� م����B�W�ON� �h������i$D�.د�'%' �����N��P3 �n�Dج� �g7��1�

� �� �KPTא����!'OV3:� �

Page 480: خطوة بخطوة مع فيجوال بسيك دوت نت

480

#C كودpublic class Developer { public string Name; public string Language; } Developer[] developers = new Developer[] { new Developer { Name = " Ahmed", Language="C#" }, new Developer { Name="Khaled", Language="Java", new Developer { Name="Ali", Languag="C++"} };

� � VB كود

Public Class Developer Public Name As String Public Language As String End Class Dim developers As Developer() = new With { New Developer { .Name = " Ahmed", .Language="C#" }, New Developer { .Name="Khaled", .Language="Java", New Developer { .Name="Ali", .Languag="C++"} }

�� �������B�G�Pא��� م و53�� ����1 �KPTא���:

� � #C كود

IEnumerable<string> LINQresult = from d in developers where d.Language =="C#" select d.Name;

� � VB كود

Dim LINQresult As IEnumerable(Of String) = From d In developers Where d.Language ="C#" Select d.Name

� �Cو� �� ���2 �KPTא��N ����Dא��������KP�����P3�����b :

� �

#C كودforeach ( string s in LINQresult ) { MessageBox.Show(s); }

Page 481: خطوة بخطوة مع فيجوال بسيك دوت نت

481

� � VB كود

For Each s As String In LINQresult MessageBox.Show(s) Next

�،�:3$D��7אو���� ���NP>�ªא��+$אم�א��53�K3��3א\���h 3א ���F� ج������3د�9��3��R�Rb�� �� �����F`!

: א �Tط

� � #C كود

IEnumerable<string> LINQresult = from d in developers select d.Name;

� � VB كود

Dim LINQresult As IEnumerable(Of String) = From d in developers Select d.Name

� � �Dد�5Fs��Qא �Tط���NP>��F��.net�K^3אMQ��א��+$אم�دא�� �: دא ��א 1'ل��� �KPTא �

#C كودIEnumerable<string> LINQresult = from d in developers where d.Name.Length > 3 select d.Name orderby d.Name;

� � VB كود

Dim LINQresult As IEnumerable(Of String) = From d in developers Where d.Name.Length > 3 Select d.Name Orderby d.Name

: ترتيب جمل االستعالم

B�Uد���'��KG�����n�Dא��9� م�� Select From Where U��NNP � Select ���+$م�LINQ ،�و��Sن�'P�����f��Q� �3� 'S� ������KP��G�� �א ،� �Fjدא� iIא� IntelliSense אل�'`�O ��n�Dא $F���� �אن ��'د �Nא�����

Page 482: خطوة بخطوة مع فيجوال بسيك دوت نت

482

t �א i$FDא�� �N � �g(� � 'Qد'�� �N���� ' � �F�!� ،� �N � H'g( �א �gNP> Select K�. From אل�'`�O �א 0�1��Q�5�!'Qد'�� �iא\'%'د�hאHא����$Q$��U���$D��3:���Q�9�$���:N3�C�7ن��C�$Q%$ول����א�f� .� �

��3�P �: ���Bא��9� م�א �

� � كود

from id in source { from id in source / Join id in source on expr equals expr [into id] | Let id = expr | Where condition | Orderby ordering, ordering, … [Ascending | Descending] } Select expr | Group expr by key [into id query]

��!I��g��D�f���N��،�a7 ل���U��3�� … �lWS�U��N�FDא $Hوس��ن�,��zא� �lWS�0sא ��q�Vא

� �

LINQدوال .2� �

�'��LINQ�n�D�51� ،��O�����O�&وو�� و,�و���lWS�hא¡�RN������3�n�D��53��D'Fول�א�ن�א ����fدوא�t .�N��+$م���I��gN3��M ل�دHو���Nא $وאل�وא

� �א $א �ob' �א �Aggregate و�C��g��sو�Cم��.HC�i$D�0B� ^3�،������Lא�h���F�� �H�P�\א����1��

�� �� �������،�א\^�ل�א����FD�C:� �int product=ints.Aggregate(1, (a,b)=> a* b );

����Cن�intsم��.H�53א���!'OV3��S�.� �All� �$3��!��\�KS��!��3د�'����C� ^3ض�ZON �،�KP 1����,�ط��n�Dא��A

�:��Kא\'&��3�YOو%C�Yم��9 �bool isMarried=employees.All(emp=>emp.statues==1);

Any� ��a7!�$� ���'ن�وא���U��R�Rb��F�.�$�����g!�،��7��� PD�n�D@�א

Page 483: خطوة بخطوة مع فيجوال بسيك دوت نت

483

�:�n�Dא�.�53�Kא¡��7d��D'Fא �Tط�،�WSא�א\^�ل� �bool isMarried=employees.Any(emp = > employees.statues==1);� �

Average� �:א\�'��53��D'F¡�aא WS�،���7א�א\^�ل�� �double avg=ints.Average();

����Cن�intsم��.H�53א���D'F���S�.� �Cast� ��53��D'F��KQ'Rא �������b�N'ع�($د�،�WSא�א\^�ل��:� �

var newString=ints.Cast<string>(); ��� .��53��D'F���Sא�H.�م�C�intsن�

Concat� �� �NQ$ � ���ن ' � ^F!� ،� 5Q�VND�23$ query1� �و �`���� : �query2�: ��� �� �:���`���A�ICو�'د�د��5P>��gא��+$אم�א���3א �

var result=query1.Concat(query2); Contains� ��$F)�:א��o&'3�5D��R�� � ^3� ،��!'OV3�KIدא��R�� ���+$م�

�P��� �� �:�Gא ���1א �bool find=employees.Contains(new employee(“Mohammed”);

��Q���5D�� ��KFذ�:g��T3��SوQuery�د�D�.� �Count� ��5PQ��3��QCو�C��!'OV\א��b�NDد�$Dو�C�2א���� م�j����$�7'م��Q:� �

Int count = employees.Count();� �DefualtIfEmpty� ����H�!��F�.�¤�NSذא���������k���sאZ!א��F�.�0sو����!:� �

var result=ints.DefualtIfEmpty(100); � ^3� ،�h����� N'ع�א� ��sאZ!9א� �F�7 �!�����و�0sא �S$Q$����Q�_�'

 H.�م�و���Ob�""ص�و�'VN� null���Object.�� �Distinct� �� ^3�،�hאHא�P��Cون�$��h����� �:7Q'م����Dد�iא �

var pure=query.Distinct(); ElementAt � ^3�،�Y�3ن��P3�U��F�7 �:7Q'م����Dد�iא �

Employee newemp=query.ElementAt(4); ElementAtOrDefualt � 9�)���Uא\^�ل�א�' ��.H�G�P��$.���C����4אن�Y��U���`����

�U� :�C� �� �� �א ��Fא�� ��4§� Wא� ،� bC�f'Ob�0�HC� $���_� א���� م.� ���'ن�א�� �C��JOو����sאZ!9���7א ���:ND��s����9א���Q3'%'د������h����� N'ع�א:� �

Employee newemp=query.ElementAtOrDefualt(4);�Empty � ^3�� �� �KPTא���،��b�N� �:7Q'م������ج���53���H�!��D'Fא �

Var newresult=System.Query.Sequence.Empty<employee

Page 484: خطوة بخطوة مع فيجوال بسيك دوت نت

484

>(); EqualAll H�7\��7��1�3ن�א��Fg�C�53�$�]� �:�����t`����Yא��� م�وא �

bool iseuql=query1.EqualAll(query2); Except ��D'F¡א�U�i���7א\'%'د �53�Y�D'F����H�73א ���b�Nوא�Z%�ع�א

�����^ �:א�و��دون�Cن��P'ن��Uא¡��D'Fא �var result=query1.Except(query2);

�...Hא�hא P���2��N'ن��$ون���Pא �First ��D'F¡א�U��VNDول�C�iد�D7'م���Q:� �

employee firstone=employees.First(); �***���H�!�lWS��b�N� .C�$��9ن�P��9'ن����D'Fא

�C��MQC�5P>��Fن�C�$��Qول��U��VNDא��� م�!��D�!�،��DدC�iول�

�:��3�o&'3وج� �� �

employee firstone=employees.First(emp => emp.ismarried==1);� �

FirstOrDefault و�א��9� م�C���H�!��D'F¡ن�א'��� ���U�:�Cא�$D��3����� �K^3א���sאZ!9א��F�7 �:א C��`��N��$�Q�_��D�Oن�Q��$�א �

employee firstone=employees.FirstOrDefault(emp => emp.ismarried==1);� �

Fold אل��K^3Aggregate

GroupBy b�N� ���Gא ��0�F{�K^3�،�$Q$Rא��GroupByאل��U������1 �Sqlא

Statementא�א\^�ل�WS�،�:� �var newGroup=employees.GroupBy(emp => emp.Countery);

�nF�Qوkey���bא���lWS�4D�: �.�و<�5Pא 'b'ل� �GroupJoin אل�����FDJoin.�� �Intersect Y�D'F¡א� ��U�iא\'%'د��b�N� �:�!�YD'F��0��7��a7،�א �

var inter=query1.Intersect(query2); Join� ��.����FDinnerjoin�U�Sql Statementsאل�� �Last� ��K^3First��VND��I��$�����gNP �:�و �

Employee lastone=employees.Last(); Employee lastone=employees.Last(emp => emp.Countery==”Egypt”);

LastOrDefault� �D��3����� ���'ن�א¡C���H�!��D'Fو�א��9� م��K^3א���U�:�Cא�$

Page 485: خطوة بخطوة مع فيجوال بسيك دوت نت

485

���sאZ!9א��F�7 �:א C��`��N��$�Q�_��D�Oن�Q��$�א �employee firstone=employees.LastOrDefault(emp => emp.ismarried==1);� �

LongCount �K^3Countع�'N �:�WSא�א\^�ل��Longو �5Pא PQ�2��N'ن��53א �long empCount=employees.LongCount();

Max ��D'F¡א�U��F�.��VND�4�C:� �int num=ints.Max(); و<�5P���7Q���$Q$\��!��א\�Y��h��H�7א �U��NF�����F��h�JOدHوس�

�7���� �Min ��D'F¡א�U��F�.��VND��qbא:� �

int num=ints.Min(); و<�5P���7Q���$Q$\��!��א\�Y��h��H�7א �U��NF�����F��h�JOدHوس�

���7�� �OfType אل���b�N� �!int�a7א��+�אج�א ���53��b�N'ع��a7!�Y�3،���9+�אج�א

�G�P�� ^3:� �var newResult=list.OfType<int>();

OrderyBy ��N��3��7Q���G���2j��N �G��Zא)��Q$D�V��(ل��^Fد��'P �:WSא�א �Var orderlist=employees.OrderBy(emp => emp.Age);

OrderyByDescending א�א\^�ل�WS�،��� �:א �G��Zو �N��iH'V��5Pز �Var orderlist=employees. OrderyByDescending (emp => emp.ID);� �

Range �YN��3�5Q$��Y���R�RV �$���53��D'Fא�H.�م�א'�:� �var newlist=System.Query.Sequence.Range(1,5);

Repeat� ��P� � ^3�،�h�3א�i$D�Y�3��.H�Hא�P���.H�H1"א�"�h�3א�@¾:� �var list=System.Query.Sequence.Repeat(1,5);

Reverse ��D'F��C�G�����@PD:� �Var revList=list.Reverse();

Select� ��KP ���Rא ��دC�5P>�،���Qن�Q�������5Dא �:���Bא �var newSelect=list.Select( emp => emp);

a7!��N��3�zא�%Cو�C

var newSelect=employees.Select( emp => new {emp.Name , emp.Age});� �

SelectMany ل���N3א��+$א�� ���UGroup�،�a7!א�$��2 PQ�5'ن�Ob��وא��N �!¦ن�א �����+$م�W SelectMany�� �� �KPTא���:� �

var newSelect=groupedlist.Select( l => l);

Page 486: خطوة بخطوة مع فيجوال بسيك دوت نت

486

Single F¡א�'���9Cط��T��a7!�i$��lא�Dد��F�.�iوא��n�D��D':� �Var result=query.Single();

SingleOrDefault� ��Cم�و%'د�$D�� ���U���sאZ!9א��F�7 �O@�א �����D$א�Q�:�C��$�א��b�ND:� �

Var result=query.SingleOrDefault();� �Skip ول�Cوز��`� � ^3�،��.�� �10��b�ND}�وز�D$د��53א ���b�Nوא�Dد�iא

���7� �:وא�Dد�iא �var newResult=query1.Skip(10);

SkipWhile � ^3�5P� ���n���7,�ط��Y�3و��b�N� �K^3א �����و �KS�`�Q�:NPא��3�$�אل���.H100}�وز�:�� �

var newResult=query1.SkipWhile(x => x < 100);� �Sum ��D'F����.�0B:� �

Double sum=ints.Sum(); Take � �:$א7Q��Q'م����Z%�ع����b�ND�$د��53�Y�3א �

var top=ints.Take(3);� �TakeWhile ��.Hא®�د��n���$و�E,�ط�3�،��3^ �אZ�9%�ع��n����b�NDع��%Zא�

��:100א��53�4 �var top=ints.TakeWhile(x => x < 100);� �

ThenBy �n�D�z�N��G��Z� �G��Z �Q$R$�א�و '�U� ^3�،�h�Qא P'د�א��ص���� ^3�G��\א�n�D�����F� �:א �

var orderemp=employees.OrderBy(emp => emp.Age ThenBy emp => emp.Salary);

ThenByDesecnding ��� �:�O@�א �����D��3$א�Cن�א �lWS�G��Zא\�PQ�f'��i'ن���Nز �var orderemp=employees.OrderBy(emp => emp.Age ThenByDesecnding emp => emp.Salary);� �

ToArray 'OV3����KQ'���!:� �Employee[] emps=query.ToArray();

ToDictionary א����د����j�N���!'OV3�U��gNQ�§�03�5P �.�O@�א �����و �ToList �5j���U��gNQ�§List<T>

ToLookup �5j���U�2��N <�5Q�§Lookup<K, Vא

ToSequence ����2��N �0����3�������PT3�Kdא ���Sequence�U�h�sH��KQ'א��.���Y��zא $وאل�و�z��Cא7L'ل�א� �

Union �K��KFT���D'F��n�D�2��N �����d'�א�،���s�Q� ����FDא9��د�א�Y�D'F¡א��b�ND:� �

Page 487: خطوة بخطوة مع فيجوال بسيك دوت نت

487

var result=query1.Union(query2); Where ��Qد�� ��T���Rط�א �.���Bא �

� � مالحظة

�X����53����� א��Uא���zא^��h$Oא��)�C$��LINQ�(���NP>�،�aא�� �:WS�53�:��Fא�א �http://www.vb4arab.com/vb/uploaded/2730/11202261862.pdf

� � :المتغيرات غير المعرفة: تذكير سريع *

���S�lWS�،�Kوא�$53�i א����7���'م.�53��gOQ������7��_��J!��g�!�2��N !'א���B�KF�� ��N7��$jא��� م�PQ'ن�א

Implicitly Typed Local Variables���Fא��lWS�،��7�����g��,���t �: �F^�ل א �� �

كودvar subset = from i in numbers where i < 10 select i;

: LINQ مع Lambda Expressions استخدام: تذكير آخر *

39��دא�hא�����7 LINQ 1 ��������53�9$א��� م C���W� Lambda Expressionsن������h�D�1א��+$אم���Q��Qد�� . א

� �

3. ETSATALINQ TO D � � Wא�!��KP���g��������F� i$�%��17א��dataset �NO אل�،�iא��W ������U�hא �C�iH'b�KPTو���+���i$D�.�53א

h�3 �א����g��Dم�$+��N LINQ �N���bא�� .� �

�����h������i$D�.�a�H�X�`N+$אم�� ^F!DataSet�~���g1�H����53و�DataTableLوא��h����� V'ل���n�D���א��gN3:� �� �

#C كودDataSet ds = LoadDataSetSomeway();

Page 488: خطوة بخطوة مع فيجوال بسيك دوت نت

488

DataTable employees = ds.Tables["Employee"]; var query = from emp in employees.AsEnumerable() where emp.Field<Long>( "Age" ).Year >= 40 select emp;

� � VB كود

Dim ds As DataSet = LoadDataSetSomeway() Dim employees As DataTable = ds.Tables("Employee") Dim query = From emp In employees.AsEnumerable() Where emp.Field<Long>( "Age" ).Year >= 40 Select emp;

4. LINQ TO XML

��R�bCXML����^�C�$�Cو��א�ن��،��D'�,�h����� �C�03��g�3����K^3��'ع��LINQ�03�K3�����XML�53��Iزن�א�X�*�§�t ����א�j�V*�א��s!���א ��!�sא�،�h����� �.�!�a7وא XML��Q'���g��D�f���N��t.'אD$�א �

� ��o�3��NsZ!א�' � ^F!XML�� �� �KPTא���h�`�N\א�����n�D�'�d�:� �

� � كود

<?xml version="1.0"?> <Items> <Item Number="122"> <ItemName>Item1</ItemName> <Quantity>100</Quantity> <Price>23</Price> </Item> <Item Number="123"> <ItemName>Item2</ItemName> <Quantity>10</Quantity> <Price>14.5</Price> </Item> <Item Number="124"> <ItemName>Item3</ItemName> <Quantity>31</Quantity>

Page 489: خطوة بخطوة مع فيجوال بسيك دوت نت

489

<Price>1000</Price> </Item> <Item Number="125"> <ItemName>Item4</ItemName> <Quantity>22</Quantity> <Price>97</Price> </Item> </Items> </Items>

� ��KF�7'م��N���Qא$�Loadאل��o�\�XML�� �� �KPTא���:� �

� � #C كود

XElement purchaseOrder = XElement.Load("Items.xml", LoadOptions.SetBaseUri | LoadOptions.SetLineInfo);

� � VB كود

Dim purchaseOrder As XElement = XElement.Load("Items.xml", LoadOptions.SetBaseUri Or LoadOptions.SetLineInfo)

� ��� �� �KPTא���:��P��W $P���،��NQ'ن�א P'د�א�iא\'%'د�f�Nbא���D'Fد�א����אض��'���N�C��NsZ!א�' �:א�ن�،� �

� � #C كود

var newSearch = from item in Items.<Item> select item.@Number

� � VB كود

Dim newSearch = From item In Items.<Item> Select item.@Number

�53�4�C��S����t ��دو3�H9^ �؟100و ��^'�n�D�Hא¡��D'Fא �� �

#C كودvar newSearch = from item In Items.<Item> where item.<Price>.Value > 100 select item.@Number

Page 490: خطوة بخطوة مع فيجوال بسيك دوت نت

490

� � VB كود

Dim newSearch = From item In Items.<Item> Where item.<Price>.Value > 100 Select item.@Number

5. LINQ TO SQL

h�J!�53��J! LINQ �D$ ��V�VI��g%'3 SQL Server iد�� ��Sא��^��א��+$א��3و��RNول�א ����U�، ��g��D�fא�. ��WS�U���Qא�א $Hس �

: البحث واالستعالم

N!��� ^3א\^�ل�� �WSא ،� �7���� :��D� � �$Q�Q�5QW  ,+�ص�א� i$Q$%��J!�KP,�n�Dج��+� �א���9و��QH¢�א iد�D9

�5D��S�FD30�N�� �V3�Uن�'N17Qو :

� � #C كود

var query = from c in Employee where c.Age > 30 && c.Countery == "Egypt" select new { c.Name, c.GraduationDate};

� � VB كود

Dim query = from c in Employee Where c.Age > 30 And c.Countery = "Egypt" Select New { c.Name, c.GraduationDate};

� � : Stored Procedures استدعاء

:��T�� � �!�oQ����a7دא 'S����D� �3�K� Procedure �k אل�@O� Attributes אل�'`�O �א �g�� �7Q'م �3��Sو� ،

'Qد'�����D��3�Kא�ن���،���sאZ!א� �KPT �وא�$(�Wg���3C�������'Sא�אq�3�K�7��Qא��� م� ( :�

Page 491: خطوة بخطوة مع فيجوال بسيك دوت نت

491

� �

#C كودvar c = db.ProceduresName("Egypt");

� � VB كود

Dim c = db.ProceduresName("Egypt")

Compiled Query :

1N\�53א�@��!�h�3א� i$� � �g3$+����� �א��� م ��B�¤�NSن���� ������K�%��7 �53�f���Q�hذא �א $Dא'.� �)�م$Dא'.��(�� �N � �!'�� Wא� ،�i�3�Kא��9� م���n�D�$Q$% �MQC� ،��17N ������hא�lWk�KLא �ذאLINQ �h א �N �7$م�

�����nF�Q��3�4D��Q�(N ��. Compiled Query א �

����������n�D�$Fא��+$אم�دא � �i�P! Compiled Queryאل� CompiledQuery.Compile�KF� Compile

���F^�ل�� �: ����Fא��9� م�،�א �KPTא �

#C كودvar c = CompiledQuery.Compile( ( DataContext context, string counteryName, int age) => from c in Employee where c.Age > age && c.Countery == counteryName select new { c.CustomerID, c.CompanyName, c.City } );

� � VB كود

Dim c = CompiledQuery.Compile( ( DataContext context, string counteryName, int age) => From c in Employee Where c.Age > age And c.Countery = counteryName select New { c.CustomerID, c.CompanyName, c.City } )

��NP>� �א W��}��� وא�ن ��U��Rא��9� م �وא ،� a7!� Z�3H�� �א �q��� i�3� 53� �^��� �g3א��+$א� KFD

Compile�: :� �

Page 492: خطوة بخطوة مع فيجوال بسيك دوت نت

492

#C كودforeach ( var row in query(dc, "Egypt",22)) {��} foreach ( var row in query(dc, "USA",28)) {��} foreach ( var row in query(dc, "Saudi",38)) {��}

� � VB كود

For Each row As var In query(dc, "Egypt", 22) Next For Each row As var In query(dc, "USA", 28) Next For Each row As var In query(dc, "Saudi", 38) Next

� � : استخدام دوال في جملة االستعالم

' �� �� �: !����B��Nsא��9� م�א �

SQL Server كودSELECT SUM( emp.salary ) AS TotalSalary FROM Employee emp Join Department dem ON emp.DepartmentID = dep.ID Group By dep.ID�

0�1��� KPT���g����� LINQ � �� �KPTא�� :� �

#C كودvar c = from emp in db.Employee join dep in db.Department on emp.DepartmentID equals dep.ID into TotalSalary select TotalSalary.Sum( emp => emp.Salary );

� � VB كود

Dim c = From emp In db.Employee Join dep In db.Department On emp.DepartmentID Equals dep.ID Into TotalSalary Select TotalSalary.Sum( emp => emp.Salary );

Page 493: خطوة بخطوة مع فيجوال بسيك دوت نت

493

�� �

: LINQ م داخلاستخدام جمل االستعال

KB�h����53א�i$����9+$אم�وא ������א ،�PIVOT �n�D א��9� م�א ��K^3��Q$��7א�O��${�$. �3����1M3א��B�W�ON� �: LINQ دא�KIאل���S�lWS�K� SQLא ��q�Vא ��م�

�: - 3^�ل�7N3'ل -

� � #C كود

var query = db.ExecuteQuery<EmployeeInfo>(@" With EmployeeHierarchy (EmployeeID, LastName, FirstName, ReportsTo, HierachyLevel) AS ( SELECT EmployeeID, LastName, ForstName, ReportsTo, 1 as HierarchyLevel FROM Employees WHERE ReportsTo IS NULL UNION ALL SELECT e.EmployeeID, e.LastName, e.FirstName, e.ReportsTo, eh.HierarchyLevel + 1 AS HierarchyLevel FROM Emplyees e INNER JOIN EmployeeHierarchy eh ON e.ReportsTo = eh.EmplyeeID ) SELECT * FROM EmployeeHierarchy ORDER BY HierarvhyLevel, LastName, FirstName" );

� � :LINQ في Inseret استخدام

� � #C كود

var NewEmp = new Employee { [First Name] = "Ahmed", Age = 25, Countery="Egypt"}; db.Employee.Add( NewEmp );

� � VB كود

Dim NewEmp = New With { .[First Name] = "Ahmed", .Age = 25, .Countery="Egypt"}�db.Employee.Add( NewEmp )

$Q$%�o&'3��!�s����NF.����� . ����NوC�������F��25�V3�53"$�و �Uא\^�ل�א

: Update استخدام

� � #C كود

var EditEmp = db.Employee.Single ( c => c.Countery == "Egypt" ); EditEmp.Age = 30;

Page 494: خطوة بخطوة مع فيجوال بسيك دوت نت

494

� � VB كود

Dim EditEmp = db.Employee.Single ( c => c.Countery == "Egypt" ) EditEmp.Age = 30

Q$�� ����NF.����� ��K���Fא9,+�ص��U53א\^�ل�א�K ���V� ��V330�N�� .� �

: Delete استخدام � �

#C كودvar deleteEmp = db.Employee.Single ( c => c.Age > 50 ); db.Employee.Remove( deleteEmp );

� � VB كود

Dim deleteEmp = db.Employee.Single ( c => c.Age > 50 ) db.Employee.Remove( deleteEmp )

YO&'\א�fWr��NF.����� �. ��50�Nא Q���5QW$�א�U �5D��SH�FDא\^�ل�א �� �

6. SubmitChanges

9�KQ$�� C��!�sو� �C�fWRو�א����FD�א�$�� � אdb.SubmitChanges()��h ��53�$א��$�z�Dא $א�q� ��K��Oאh����� . �i$D�.�Uא

� � : التحديث بالتزامن في قاعدة البيانات

Wא���`$� : LINQ אل�*�،�KV�\א�@� '�0sא\�KVONو���K3���� 5j�P وא W��ChangeConflictExeption א

i$D�.�n�D�KQ$�� ��א�1[��� H����5D�2�NQ �KPTض��h���FDא��H�5א����אض�P>�،�Y3$+��3�i$D�Y��h����� א� �� : א

Page 495: خطوة بخطوة مع فيجوال بسيك دوت نت

495

� � #C كود

try { Db2.SubmitChanges(); break; } catch ( ChangeConflictExeption ex) { MessageBox.Show( ex.Message ); Db2.Refresh( somequery, RefreshMode.KeepChanges ); }

� � VB كود

Try Db2.SubmitChanges() Exit Try Catch ex As ChangeConflictExeption MessageBox.Show(ex.Message) Db2.Refresh(somequery, RefreshMode.KeepChanges) End Try

��א�1[�و�dول��H��g(Q�01��Q�_�' �،�W�ON� �. �d��NS �3C�03 Refresh A�IC�i�3ول�א��9� م�א �

� �$�5P> SubmitChanges ¤'���$Qא�U��MQא��3�� �$وH����Eض��K^3א �KPTא�� ���U�23��4 �: א �� �

#C كودDb.SubmitChanges(ConflictMode.FailOnFirstConflict); Db.SubmitChanges(ConflictMode.ContinueOnConflict);

� � VB كود

Db.SubmitChanges(ConflictMode.FailOnFirstConflict) Db.SubmitChanges(ConflictMode.ContinueOnConflict)

�JO . 5وא �9�t��'���5QWS�n�D�A'א �ConflictMode Q�VN وذ ���53א

� �� �

Page 496: خطوة بخطوة مع فيجوال بسيك دوت نت

496

من خالل الفيجوال ستوديو LINQ TO SQL انشاء فئات .7

� 'Qאل���'د'`�O ��53א LINQ TO SQL Classes �NP> ��,�T ��53א���NP>2008z�Tא ،� �7�9� �g���PR� א : א�و�

Wא�.�� Server Explorer א��NP>�،�lH���Iא��h�. D�z�Tو%$אول�%$�i$Qאو���53�h������i$D�.�GRאل ��$�،

�$��z��GRא�$אول�،���`$ ������hא����N���bو.���� � ��i$D�.���Oא�� : א �KPTא ��م�א

�{���U���$Dא�z�T א�ن �.�م 'Qאل���'د'`�O �א ��ªאن ��� ������KP� Data Access Layer -�' ��N�

��S��W��− ^3��� �� �$وאل�א�h�OQ����$`���،� :

Page 497: خطوة بخطوة مع فيجوال بسيك دوت نت

497

� � #C كود

partial void InsertEmployee_info(Employee_info instance); partial void UpdateEmployee_info(Employee_info instance); partial void DeleteEmployee_info(Employee_info instance);

� � VB كود

Private Partial Sub InsertEmployee_info(ByVal instance As Employee_info) � End Sub Private Partial Sub UpdateEmployee_info(ByVal instance As Employee_info) � End Sub Private Partial Sub DeleteEmployee_info(ByVal instance As Employee_info) � End Sub

�Xא��ص��KVO �C�Kن���g�Cא.LINQ�5D�$Q�\د�3��!��א'���N��' �،�LINQ��}H��3���$F)س�$Ng\א�X��P!�

�aא�� �$אWS�U�i$�%��Qא�א¡�ل�،�}$WS�n�D�lא�א��� �����N3ن�'PQ:� �� �

ابطر

http://www.vbcoffee.net/SamerSelo/linqcourseebook.pdf

� �� �� �� �� �� �� �� �� �� �� �� �

Page 498: خطوة بخطوة مع فيجوال بسيك دوت نت

498

� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �

Page 499: خطوة بخطوة مع فيجوال بسيك دوت نت

499

� �� �� �

� �� �� �� �� �

� �� �� �� �� �

WWF � �� �� �� �

� �� �� �� �� �� �� �� �� �

الباب

19

Page 500: خطوة بخطوة مع فيجوال بسيك دوت نت

500

� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �

Page 501: خطوة بخطوة مع فيجوال بسيك دوت نت

501

Hא$b9א�WN3 .net 3.0 ~��nF�Q��3��!�sא���Windows Workflow Foundation�f��Qא وH�V�Iא WWF �،�وא $وאل ��53א\�gم �D'F���Sو API W�ONو�� ���و�3א. iHدא���� ��F�� ~ �א ���h���Fن� workflow א �� אو

�BZ �. ��Rbא �

53�i$����$��lWSא�����bوא ���� !�sא��e�t �دא�KIאلא��0Oא�Ng\�*j�V$���א �h���4א �g� viusal

studio ��bא����3��,��P39�� workflows iن�د�23אل ����O �. �03א P'د�Cو�א ��W�ONא � ����P�Q'ن Workflow אو�אل WF אل�،��g��D�z�N��23��4 א ��D'F���S �53�23��4א ��h���Fא �K�PT����Q�tא

�����53אل �א �gM���03��1���3��D'F� Business Process ��t �$و�53��D'F��n�D��SHא\�gم� �'وא�Q'��KF���t ����وא �. ذא�hא ��gN�����Vو���gM���Yא �

: مثال

�2�N\�����V �����Check �h א �G���n�D�23��4א�VQ9ل�وאد�Iل�F.H:�و'�d KFD�WSא:���3$Iא �i$D�.�n�Dא53�$�]�� ����bل��VQא��D�����������V �. و%'د��3$I��Q$7�����lא �

SnF��� �g��� ���F� �א lW Business Process nF��� ���Iא$ �א �b�N� �tasks i$D وא 53� �P�Q'ن 23��4 وא

Business Process .�� �

�����و��7���� P'د� ،�و �NS Workflow 5P¤�א �$�53�$Qא 4א�23א 7��t$م���3$Iאدא�iאل�H��1א���3��gא���NS�i��\אKFD�5P>���r trace n�D�i$� �KPوא i$��KQ$�� �و����0א���z�1Iن�و%$�h،�א����osذ ��א���P3:�אh��jא���U��7�9 ��Qو�� 'g���A4P . א

� �

WF مكونات واساسيات .1 ���W�ONو �@�!���a7د�WF K^3���R�s'��h�3'�H אل�K��.د�'���S visio ����T Wא�!���KFא�، �hאHא�P� وא

�. WF ����!��SW�ON����Q وI !:�א\'%'د�U�iאل �

��G!�ل� assemblies K و namespaces��'�WF n�D وWkא�א�h��'P3�ن�א],��g�],�:! Iو .net .� �

� �

Page 502: خطوة بخطوة مع فيجوال بسيك دوت نت

502

Workflow Activity:

����aوא�7��9ل����o�b'����Q KP,�n�D��N� Activities �gNא ��KFא��ص�Kjو���'Qאل���'د'`�O ��Nא����Qو

K^3���� �V'ل C�iZOو� C delayو if else و��Yא Invoke KP,�n�D��SW�ON����Qאو��Y�3 �N��3�h1'אI :� �

WF البدأ مع .1.1

�:Empty Workflow ���אQ$% Workflow ZI$�،�א%���K'ع�א\�Tوع .������T3�z�Tوع

� �

Empty Workflow��:t ���وא��  �'אع�א��!�sא�،��b�I�h�7��N��א�n�D�'�d�9غ�H�!وع��T3 �hא������$��h���4 �: ���FV��_�Dא �

1.2. Sequential Workflow

�UML ��Q א ��s'��tאل Diagrams א N'ع�א�ول��53א�'אع�אل ،� �Nא��ص�� �KP,�n�D� :�!�KF� �'���sאKPT ���3��7 ����'��sא� �3�h���FD،�h���F� : وS'�א N'ع�א�,��gوא��^��א��+$א3� �א ��م� �K3�Pא

Page 503: خطوة بخطوة مع فيجوال بسيك دوت نت

503

� �

1.3. State Machine Workflow

�Q���5D�Eא$�������g���3��^א����g� hא�q� �1���hوא : ��53��D'Fא

Page 504: خطوة بخطوة مع فيجوال بسيك دوت نت

504

WWFتطبيق .2

1�������7N��،�a'م��KF�7'م�א�ن��N� �Hא\�و��Fن���'��� ���U�،�Hא\�و��Fل����I+$م�אد���53א\�G�1 �����Gو��9א�Dد�iא]�و ��9د�Iل�� 7��f'���R�Rb'م���� ��Hض����A�IC�i�3�Hא\�و��F� .� �

�.� Wא $Q$%وع��T3� z$�� Sequential Workflow Console Application � � �g(��� ،�$Q��� �F�� و�:

�Qא$���� �� �KPTא����FV\א��,�, :

���Uא7N� Code Activity E$L'م���دHאج א�ن�� :�codeActivity1_ExecuteCode و��0MNא���3א

� � � �

#C كودprivate void codeActivity1_ExecuteCode(object sender, EventArgs e) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("***** First WPF Example *****\n\n"); Console.ForegroundColor = ConsoleColor.White; }

� �

Page 505: خطوة بخطوة مع فيجوال بسيك دوت نت

505

VB كودPrivate Sub codeActivity1_ExecuteCode(ByVal sender As Object, ByVal e As EventArgs) Console.ForegroundColor = ConsoleColor.Yellow Console.WriteLine("***** First WPF Example *****" & Chr(10) & "" & Chr(10) & "") Console.ForegroundColor = ConsoleColor.White End Sub

���P���7א���Q�9��QHא��وج���gN3א9��!�sא��S��� �� Wא�.����GR א��i'1א�،��R�Rb�H�3و��Fل����Iد�� While

Loop $Q$R7'م���Nאل،�و�� Condition n�D�z�N���3א�:N3ج��+���W �: א �

-�� �Boolean K��03 ��'د��function ��71N3��F�7 دא �gj�D$א�����Q���r Loop $��و� false وC�o.'��

true Hא�F�� .� �

-� z�Nאو�� n�D declarative rule condition �b�I���B��Q���5D�א .� �

f��Nא��WS��N �^3�U � �Nوא AskAgain دא�$�����t True $�����F�!אل�p� ��א����Fא������D9د�iא���U

�N false �R�RV ��א 'b'ل� ��F�Pא ���א���U .� �

Gא������ �� Condition א���א $א ���Uא �Tط Wא��53א �T,��א����� �KPTא��−�Hא\�و��F�P����b�I�oQ����$��� : - אو9

�: א $א � و�'د � #C كود

public string Password { get; set; } private void AskAgain(object sender, ConditionalEventArgs e) { Console.Write("Enter Password: "); Password = Console.ReadLine(); if (Password == "Ahmed Gamal")

Page 506: خطوة بخطوة مع فيجوال بسيك دوت نت

506

e.Result = false; else e.Result = true; }

� � VB كود

Public Property Password() As String Get End Get Set End Set End Property Private Sub AskAgain(ByVal sender As Object, ByVal e As ConditionalEventArgs) Console.Write("Enter Password: ") Password = Console.ReadLine() If Password = "Ahmed Gamal" Then e.Result = False Else e.Result = True End If End Sub

�!�sא��S�iIא���N�'1Iא�ن� Activity ��Q�_�' ��F�! �F����D�����g�!������،��R�Rb�H�3و��Fل����Iאد This

Password is Wrong��.א�W �، GR�� Activity �g�!د�'P �: وWS�0sא�א � #C كود

private void codeActivity2_ExecuteCode(object sender, EventArgs e) { Console.WriteLine("This Password is Wrong..."); }

� � VB كود

Private Sub codeActivity2_ExecuteCode(ByVal sender As Object, ByVal e As EventArgs) Console.WriteLine("This Password is Wrong...") End Sub

� �

K �K3�P � WPS Sequential WFא���P'ن�א �KPTא�� �KPTא�� :

Page 507: خطوة بخطوة مع فيجوال بسيك دوت نت

507

: א 2j��N و,�,�

9��ªאن�WS�K^3א�אل�*** WF 'S��Fل�3�$%�$7א��'Iم�د�(��n�D�:7��1��5P> Uل��Lא �a��ل��'Iم�د�(�h�Q'�)�f �I�03א�KP�kא�@O��، �K�g���Uא�^��$�OQ��3�'Sو��Rs��3وא�� �5Pא �iH'Vא�،��FgN3�KP א P'د�

�g!و�izאل .�א�h���F� ��!�sد�א'P ��. Debug وאل �h�Q'�) traceא �� �

3. WF Code Liabrary

z�Tא�� �N��P3�����bא���D'N و �@�!C Windows Forms a7و�NP> ASP.net 03:�א ��lWS�U WF 03�KFא

Console ���������، o�3�����g�Q'� .dll �I������. و����53א��+$א�U��g3א��1 �� �� �

Page 508: خطوة بخطوة مع فيجوال بسيك دوت نت

508

� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �

� �

Page 509: خطوة بخطوة مع فيجوال بسيك دوت نت

509

� �� �� �� �� �� �� �� �� �� �

WCF

� �� �

� �� �� �� �� �� �� �� �� �� �� �� �� �

الباب

20

Page 510: خطوة بخطوة مع فيجوال بسيك دوت نت

510

� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �

Page 511: خطوة بخطوة مع فيجوال بسيك دوت نت

511

�_�D�U�i$Q$א��h��N7�� ��Nsل�א����א I�53.net�h�7��1�� ��g%'3�i$Q$%���N7���g�¦ذ�������X��P ��0�13�Uא���g�Cא���$אل� ���h��N7א�$z$��i$Qא� �NFsوذ������،�:! Iو��Dא\'ز�h�7��1� �C�h�Pو� ����אT א �n�D�KF���tא

�53Winsock~��z�gوא����Sockets.�� �� �

�_����z$� WCF�_�D�n�D���Q���i�(����Nو.��Kא�Web Services��Qא$� �.��WN3א �� �

1. Web Service

�א�� �g��D���1Q� �3� ��h�3$IوC�GQو ��j$�3 Web Service 23���5אD� iH��D��S .net �K����n�D� �Cو �������g!�$Q$R� �@�ASP.net �k א��gNP 'א%(�وא%��g و����NSد�'V7\א��� ��S��g Interfaceوא%��gא��9+$אم�و

( 0�1��Qא��1 و'���kل�'b' ����C��3C����Qو���Interface G א\��+$3'ن�א�،�Y�3 Request �� �G�`��Q�Q���5D��k http protocol ¿�Q��3�n�Dدא��F�DאXML نC�� �� ���53p��t C��gFgOQو���YQ 3��gFgOא 4א�23 وא

���������3وא�%�i�gو3'א.�0א�����Z� .� �

A�IC��7Q�1ع��'s'\א��gOول�אن���RNوא\7$��3و������ ���23�����5D�iH وא�ن��NN��nא ����oQאD�GQ��3و$+!�،h�3'��\א�����Gو��� �7Q'م�א\��+$م�{�Nدא�: �g%ون�وא$� �،�h�3'��\א� lWg�� �א��3$ :��D� �و������53د :N3

�S�� W �h�7��1� 71@�،��������gN3�G�1א �h�3$IN��3��NQ$3�U�@71 ووא���g,C�53�$א ����bא���GQو���%H$��� ��'د� n�D�iن�3'%'د'P�� �g�C���� �!�sא� �א��+$אم �g%وא� �kن�'PQن�C�� �و��Kذ ،� ^3� iHא�Lא

��Zא�� .� �

n�D�$F����GQو�h�3$+!��NO��C��Fو� XML ،�h����� ��K�^Fא�H���F� 0�B�U�234א �א�C�c�Q��3�5��3ن��0�Bא�(N �. ��5D)�م�א �C�K�qTو� ��qא ��4 .�د�n�D�iHא �����g�3�K3و!��q���gFgא �

�7�����NO��C��F��23א���h�3$ن�א�C��}ع� و'N !��א W������n�D��g�OMא��C�$��9���Zن�WS��D$Qא�א� ،�!¦ن�א

،���4 ���F.���C�53�23�����K�FRو�ذא�HCدC�hن�}����3$I�Xא���g%�n�D��bز¤�א ��V+T!�[�$� �53א

IIS �!'و��PQ�3�53�z�53א��$א Windows 2000 �^�Cو .� �� �� �� �� �

Page 512: خطوة بخطوة مع فيجوال بسيك دوت نت

512

.net خاصة بك من خالل Service Web عمل .1.1KF��� ��7'م f'�� 0Q�� �א �א $Hس �WSא U Web Service i$��و 53� iHא�Lא� �%Hد� �gj�1D��� دH%��( �7'م

�Q�g��g!(�i$� �7'م��������g�Q'Rو�)�Q'J3��%Hد�(،�S��3�� �: �وא\��د ��א �

result=(input-32) * 5/9

�.� z$�� �%$Q$ و ��T3وع H���I�� New Project ZIوא ASP.net Web Service U� �k� �א�� ZIوא� ،

localhost�������n�D��g���{���Q��P ^3�،��V+T : א

ConvertWebService/localhost://phtt

�o�3 ��7'م �gN3�h�O�\א�����z�T���� 'Qאل���'د'`�! Web Config U��F�� �3�e ASP.net �F�� ، $`��

Global.asax �����]TN��f'�!�����j� ��. ��3C Service1.asmxא �h�ROVא �

���P'ن�א��9 �7�9 Service1 ل����אل'b' �א �g����Q�t ���S WebService��9א ��7Q�1א Wא� א��ص����،5P� ��و�G��N3א��������S�q��n�N� ConvertWS� ^3 ..� �

�1�������+$אموא�ن���C���47'م���� �F�� �3�e .net � C�@N��9�5Pن .����1����א\��د� ،��7��� Web א

Service ��j�3�hدوאC�n�D�'���9C�$��9 TextBox ^3 .� �

���!�s����.א�W �و�� �: VB.net ^3 'د��� �KPTא �

#C كود

<Webmethod(Description:="iHא�Lא�h�%Hد�KQ'�����F� <"3^�ل�

public decimal Convert(decimal degree) { result = (degree - 32) * 5 / 9; return result; }

� � VB كود

<Webmethod(Description:=" Hد�KQ'�����F� %��hא�Lא3iH^�ل� ">

Function Convert(ByVal degree As Decimal) As Decimal result=(degree-32) * 5/9 Return result End Function

�1����lWSא�$��3،�وC�@N��9ن�PQ'ن��X�`N �. 3'%'دא��g%�n�Dز¤ IIS وא�ن� �

Page 513: خطوة بخطوة مع فيجوال بسيك دوت نت

513

5P� � ���O���. Internet Explorerא\���OVو�� : و.��������Pא ���1א

asmx.ConvertSW/ConvertWebService/localhost://http� �

�R�Rb�iH'V��KF����g�'��53�$�]� �. ����0�1א�ن�}����א���3$א�������bوא � �`����א��g%�n�D��3$ز� �Uא 'א.���Q�5�!�0א��+$אم�א�Wg���3$א�א �KPT،و�a7!+$م������7Q�1 و�����lWSא

�g�C�53�$�]� �. ��iz�OP��KF א\��+$م�وא �� �

� �UوD�0s$د��53א�j�V*����3$א '���Q Webmethod n�D��gN3���W��،�GQא��+$אم�`� ���Kא� :� � 1−�BufferResponse� :�bא���lWSوKFDن��������� ��ذא �F�!د�$���� buffering �،م�$+��F� ��Kא��H9ل�.

�F�.��kو True وC False .�� �2−�CacheDuration�:�KFD�: I�53���Q�W ^�����و�$د Cash و��S�$د�א '.��א�����F.H��F�.�WI]و�

$Q$%� 53� h����� �א �א��Hل iد�Dא� K�.� �א\���qق �.' . א

3−�EnableSession�:د�$� ��b�I�K��Oذא�������F�! Session 9م�C .� �� �

خاصة بك في مشروعاتك الفعلية WebService استخدام .1.2� �

$Q����N�Cض�ZON 3�23^ � ���h���FאL������،�و��C�$Qن����+$م �����U�GQ��3و$I�53�iد�O��9א Web Service

�g��g!�53�KQ'R� ��� ��Uא $Hس�א �����وא W�7Q'م :�� �NF.�W �א��� �����QدH%�א : �وא W���ن� �Q'J3

ConvertSW .�� �

1����وNQ$وز��Dد�،��z�Tא�ن������. �Fj�.�53و Project ZIא Add Web Refernce.�� �

H���I��� �.� Hא'�� 0��3�� � �g(�� ConvertSW.asmx ��3$+و�� ،� ���� ��Uא $Hس�א :��4�� �NF.� W א53���!�sא Viusal Studio j�Vض�א��D�����!�3$א��lWS��gQ'���t �. *�وא $وאل�א �

��Q���K7�Nد� وא�ن��'P :���א

� � #C كود

LocalHost.ConvertSW conv = new LocalHost.ConvertSW();

Page 514: خطوة بخطوة مع فيجوال بسيك دوت نت

514

� � VB كود

Dim conv As New LocalHost.ConvertSW()

����7����C'م���د�Iل�دH%��א�Lא�U�iHא Label1 و 0s'� Textbox1 وא�ن�.��3^ ��P � �(�Nول�و��

،� �oQ���� convא�و´�P ���ض� ���Uא ^����،�א P'د�א �lWk�K3�Pא �'�d����F��n�Dא���3א �����א��ص� �� ����1א��!�sא :� �

#C كودLabel1.Text = Convert.toString(conv.Convert(textBox1.text));

� � VB كود

Label1.Text = Convert.toString(conv.Convert(textBox1.text))

� مالحظة

Iא��:��N� ��Kא��lWS�z�gא $Hس�S'�א����ذא�.�U�KQ$���KF����Fא��U��.�،��3$א �23��4א W א. ��g3$+��Q�Q$�� KF�� Update ��� �و53 �א�<5 �א\�وس H��� �g��D� aqM �א �Q��� 5D� �k H���Iא Update Web

Reference.�

� �

رنت الجاهزةت اإلنت خدمااستخدام .1.3f'� אلא�ن��7'م��h�3$I�$�Cم�$+��Qوع��T3�KF�� Web Service $�و��،���Zא���n�D�iא\'%'د ��R� א

h�3$7$م�����א�Q�W ��א�� ��: �n�D�h�^Dא\'.�0א �

رابط

http://www.webservicex.net/WCF/

dn�D�0.'\א�אWS�'� �� 70�'א�Sو��gN3�i$���: ��H���I����F.�،��������3$Iوא �

رابط

http://www.webservicex.net/ValidateEmail.asmx

� �

א �h���Tא 7��t$م� Cم��9و��WS�5D��Rא�א�lWSU�K�>9א����F�!��3$ذא���ن��NS¤�א<�Wg��Kא�א �KPT و§��4�gא��� ��. False אو True و��'د���h�3$I : IsValidEmail �F�7א Q4$�א� ZPو���،�وذ ����Q���5Dدא �

Page 515: خطوة بخطوة مع فيجوال بسيك دوت نت

515

�!�s7'م�����،���$�Dא��Fوא�ن�� Web Refernce 7'م�N�����537��،�و����:�!�s����NF.�W ��TFوع���\���Hא�$Q$%���� �n�D7'م�������f'��� W ��،�و'g����3$א��lWS�03�K3��� �5 �F��+$م�אP>���rم�H'O ��0��3*� א

�F�.� H���Iא� ��Q� ��r� �3C� Hز� ��� �و53 ،� �א� ZPو�� $Q4 �א �אد�Iل :�!� ��Q � ��H� ��Dض ��� �و53 א �Tط

MessageBox�K�>9א�� ����g�! .� �

�����W �: و�U�:�sز�Hא�S��3' א P'د�א �

#C كودnet.webservicex.www.ValidateEmail x = new WindowsApplication1.net.webservicex.www.ValidateEmail(); bool r = x.IsValidEmail(textBox1.Text); if (r) MessageBox.Show("��Rb�K�>א "); else MessageBox.Show("±��I�K�>א ");

� � VB كود

Dim x As net.webservicex.www.ValidateEmail = New WindowsApplication1.net.webservicex.www.ValidateEmail() Dim r As Boolean = x.IsValidEmail(textBox1.Text) If r Then MessageBox.Show("��Rb�K�>א ") Else MessageBox.Show("±��I�K�>א ") End If

��א��9+$אم 03 ��j�,و� �(� \��� i�Q$%�A�IC� �3$I�h$%א\'.�0و� �WS�U��Rא و��S ، א���FאH��Uא

�NS��3$א��${�،�:! Iو���N\71@�وא ����n�D�fא����bא�� :� �� �

رابط

http://www.webservicex.net/globalweather.asmx

المثال األول الستخدام هذه الخدمة هي معرفة المدن الموجودة في دولة معينة : ، مثال هذا الكود GetCitiesByCountry باستخدام

� � #C كود

Page 516: خطوة بخطوة مع فيجوال بسيك دوت نت

516

net.webservicex.www1.GlobalWeather m = new WindowsApplication1.net.webservicex.www1.GlobalWeather(); MessageBox.Show(m.GetCitiesByCountry("Egypt"));

� � VB كود

MessageBox.Show(“Welcome”) Dim m As net.webservicex.www1.GlobalWeather = New WindowsApplication1.net.webservicex.www1.GlobalWeather() MessageBox.Show(m.GetCitiesByCountry("Egypt"))

�N �%��Xא�ن�Q KFD��ض� ،� �V3�U�A4P �א\$ن�א z��C TextBox �!��3� $Q���t א\$ن� و%��Xא $ول�א�k�A4P �... א �

، بالشكل التالي GetWeather باستخدام الدالة األخرى هي معرفة حالة الطقس

: مثال

� � #C كود

net.webservicex.www1.GlobalWeather m = new WindowsApplication1.net.webservicex.www1.GlobalWeather(); MessageBox.Show(m.GetWeather("Asyut", "Egypt"));

� � VB كود

Dim m As net.webservicex.www1.GlobalWeather = New WindowsApplication1.net.webservicex.www1.GlobalWeather() MessageBox.Show(m.GetWeather("Asyut", "Egypt"))

n�D�iא\'%'د�h�3$א�� �g,ن�אC����,Cن�C��7وא�ن�� ����� ،� �� ��h Q'Rא\���� א ������S��Nא\����7

��r��QH'!�h�3$א��lWS���.�E$� �n�Dد��F�D9�53�9$א��h F� ��KQ'Rא��������U��g3א��+$א��NP>h9א א\��دHא�F�����q���t ���وא�L .� �

��K^3א�V�9ل ���$�7א �^�C�h�3$I� �MQC�¤�NS ��N� �א �g3$7Q� �3$I�����23��4+$אم� �N'¤�وא $!��Q���5D�0א ��

�:! Iو�.�V.��Sو :��T3�l�{א�U�����gNP ���Q'� .� �

�3$I�¤�NS��MQC RSS l�{א�U�����Sو �:��T3�،A�IC��3$I ��3$I��Sو�i�T�N3�،�@71 ��א���n�D�f��� א��F� �53א ISPN ����T وא ��Pن�وI !:�،��'ع����IوS'�א ���h�3'��3�n�D�f א\���N،�وj�VI*�א $ول�وא ����وא

Page 517: خطوة بخطوة مع فيجوال بسيك دوت نت

517

U�¤$�OQ� $.���� h����7 ���53א ��h Q'Rوא���� �1�� �3�KP �GQو�h�3$I�$`��� �MQC� ����א 4א�23،

�. א\��و!� �� �

wcfمقدمة إلى .2� �

�א 53� i$��&H'gوא ���א �tوא� i$Q$א�� h��N7� .NET 3.0 ��N7�� ���� Windows Communication

Foundationא�H�V�Iא��k��3�Q�t א �t§�*����_�א�V�9ل�وאل API's ،�و�53��D'F���Sא $وאل WCF وא

web servicesوאل� remote access :! Iو .� �

NS�K��T ��y �n و �g%�n�D�Y����� xز���O���'S�� 5Qא �+��Y��Gא ��17Nא ��gND�E$R���tو��P'ن�,��N�qא� ���U x=y KF������F� ��lWSא �N ��F�����r �23��5�$�و��אD�i�g%  ��h�Pوא 'b'ل�T 1���n�D�h�7א� א

h�O�\א�K7א]�د���و� ... � �Lא���Zא����VD���e�t 1���h�7א� �. א���53א �

h��N7� �א 53� ^P �א ¤�NS �g&�t ��א�h�!و����� ،� ��D'N �א lWS� 53� ���א23 �Q'1��U�234F���FD$ � h53��D'F� �03אل�K3��� ��h�PوAPI's K^3�،�:! I א�L'ل� ���K�gאT ،� DCOM ، MSMQ א���h���F����bא

��N7��H'g&�03و .net �JO �lWSא ��NS�،�h���F¤�אMQ�� א����Q$7��� System.Runtime.Remoting K^}��bא��N7� XML Web Services K�g���53�h��N7� �i%$א�،�و�ن� ،��lWS��NPeא���iH'V���D3'ز��(��KFD�h���FD

A'��\א�אWS�U�KF� א ��م�!���NPFא �+�V*�ز�Qد�iوא �^'H��I�n�D�Hא�hא��4وאو��U�G����9��N� �K��73�0אU��1����iد�Qא��+$אم ز��Q���5D�$�7�� ���א�� Named Pipes, Sockets, and P2P Y������!��g,9א��Sو

�$م�,�i�gא ��h��N7א ���3 .net �7���Y3$+אل� �א ������)�א �NNو��U�K.א��n�D - �53�^P �א �!'�� �gא�������$�53�zא $Hس�א ������F^�ل �. - א '.��!�����،�<��NPא �

234F��� �i��Lא�lWS����� .net _�D�K�. WCF C$�N�7دم�� ������lWSא ��U�، ���N7א $Hس�א��n�D�f��� � .� �

� �

WCF البداية مع .2.1

K ����qT��$�� Visual Studio 2008وع�T\ع�א'��H���I����.�،� WCF �� WCF Service Library �KPT �� ^3�� �� : א

Page 518: خطوة بخطوة مع فيجوال بسيك دوت نت

518

�NS� ��g3$7��A�IC�hאH��I�¤ WCF �NP>���r �3$I�03��g7��1� RSS ��N7و��C WWF �¤�NS�،� ��sאZ!א

z�Tא��hאH���I�5אFs��MQא Web Site ${�$Q$% WCF Serviceא�ن���ND's'3�'Sא�WS�@� �5P �. و �

h�O�3�E ��z�T������sאZ!א��F.�$.���O��${א�ن� assembly �S :� �−�WCF Service� �−�WCF Service host� �−�WCF client� �

�� �� �: و �����53�$��9�a'א!��א\��'�h�3א ^ �Eא �� �−�Address�::ل���V�9א���Q�W �. d�'S$د�א �N'אن�א �−�Binding:a�� �. ��ق�א �−�Contract�:ل I�53��SW�ON����Q�t ��. �ob WCFא\�gم�א �

Address شكل ومحتويات ال .2.2

: h�3' WCFא ��17Nא�و��3�53���،�:��KV����W �� ��Sא �N'אن�א�� : א ��q�Vא ����3א

scheme://<MachineName>[:Port]/Path

� �

Page 519: خطوة بخطوة مع فيجوال بسيك دوت نت

519

��� :��Y���3א 4و�'�'�h9א\'%'دC scheme iن I�53�KF���f'��W � �$د�א 4و�'�'ل�א �.MachineName�:��KV����W א S5'�א\�WONא W������א�V�9ل�Port 3 �$د�א\�Pن�אICو�،�: I Path

�. �Uא��gز�א W��'د�א�V�9ل��: Services و3�'S���Hאل �

���Kא\^�ل��n�Dא�WS :� �

net.tcp://localhost:8080/MyWCFService

� � : تجربة بسيطة

�. z�T��� WCF Liabrary U�� �$א�oQ�����!�s����.��Sz�Tא��$���،�i$Q$% IService1.cs:�� �

#C كود[OperationContract] int Add(int x, int y);

� � VB كود

<OperationContract()> _ Private Function Add(ByVal x As Integer, ByVal y As Integer) As Integer End Function

� �U����53و Service1.cs �� �� : .��������Pא $א ��א

� � #C كود

public int Add(int x, int y) { return x + y; }

� � VB كود

Public Function Add(ByVal x As Integer, ByVal y As Integer) As Integer Return x + y End Function

KF����.� ،�a7!و Run ل I�53� �g���`����.و WCF Test Client ��.�YF.H�������$��� ،� ^3�� �� �KPTא��

��n�D�aqM Invoke KLא����`� .� �

�'ل����� ��53א $Hس�א^P��Kg�Cא�WS�@� C Web Services ؟

Page 520: خطوة بخطوة مع فيجوال بسيك دوت نت

520

�Y��N7� ���lWSא\�PQ�3�0.'3�53���H�7و�'!����Y��S�Yא�K7�]��K��،�a7!א�WS�@� :� �� �

� �� �

�� �� �:�ذא�����N'د�א����אض���!��Cو%:�א\��NP>���H�7א�� ع��4D��g��Dא �א��aא �� �

رابط

http://msdn.microsoft.com/en-us/library/bb310550.aspx

� �� �� �� �

� �� �

� �� �

� �� �� �� �

Page 521: خطوة بخطوة مع فيجوال بسيك دوت نت

521

� �� �� �� �� �� �� �� �� �� �� �� �

نقاط متقدمة

� �� �� �� �� �� �� �� �� �� �� �� �� �

الباب

21

Page 522: خطوة بخطوة مع فيجوال بسيك دوت نت

522

� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �

Page 523: خطوة بخطوة مع فيجوال بسيك دوت نت

523

�����7ل������Q'1��_�Dא\'א.��0����ض����Q'���NS���א �7Nط�א��s!���א ��_�t����I��gs ل���א $Hوس�.��Kא �� �

Debug -التنقيح .1� �

����،���CH�G�T��z�1IC�i$D������C�� ��g(��23��4 �P��9'ن�.�دHא�3�n�D��!��א\�Pن�א W��n�D���FD�z�N�Cא�����5D��Oא ��F�7א N3��g&�i$j�!�h�g&��NS�53�،��g�.'����N��t:�א��]1�Q$$א�،�q�3��F�.�i]`!�${���Cو�C

�Debug�KM!C�iH'V���j�1IC�0אل��� �.� �� �

BreakPoints: � �

H'!� W�ON� ��53א P'د��o.'�Q���rא �N��3�5��3C�n�D� �g�sو���Qאل���7ط�����¤$��Qو� �g� �Visualא 'b'ل��

Studio�f�NJא���iد�Dא��NP>�،�K��T\�53א��S'�I�53�$�]� א�hوא����א��gsوאq�\א���.�������<�3��NPא.�،��n�D�aqM ����1����1��W�ON� F11�n�D�aqMא����Q�gN� �W�ON� ��.C�F5و�3'א���bא �

��!�sא��NP>BreakPoint�n�D�aqM ���F9��1� ��3^ א]$د�،�Cو�א �U�n�D�aqMא�� �:�%���Gא P'د��� �KPTא �� �

� �� �

����F� ���2 ������Gאن�א��N 3^� ��Nא ������7'م���7א���C�9��،�h������i$D�izא!�%[�دوP���3'ن�א�U�A����F��،وא�ن����Q�،�i�����S��3�Aא\���PT؟؟؟���H�X�sאن��'.���אن���Kא\$C�$�9�h Iن��P'ن�3'%���و�����7 �

� �

Page 524: خطوة بخطوة مع فيجوال بسيك دوت نت

524

�A�Iوא��i'1א��Y��K7N� �$�K�qT���zא �23��4و����53א ����F.و�،�����17 ��Fא.N �53א%WS�Kא�و�lWS���sאF11.�� �

�lWS�U��g���hאq�\א��Q¯H��NPF��1،�و��� �'.�oو.��א 'b'ل����WSא�א���i�,����`$�אن�א 7���23��4'م�3�� �� �KPTא���z�Nא��:� �

� �

� �� �

�$���،�hא�1'א�U��F؟6א�ن�א���E$���1I'א�3�A���hذא� ��_�q�\א�،�G �$�Cא �.��R�Q'ل������Q��3�$L��.� ��Gא\�KVQ��3$ND� �!�،���PTא��K�§�U�hC$א�ن�א���l�

�.Q�$�Q��F.H�GD'��א�WS�53�4א� ��X�M �����Fو��NP3CאVL'ل��n�Dא �2��Nא\�X'�1א����gא�...��Doubleذن�א����FD�2����oQ�����KLא:� �

� �

Page 525: خطوة بخطوة مع فيجوال بسيك دوت نت

525

� �� �

P���i'ن�א\'s'ع�b��^�C�'���و��$�7א���S�lWSDebugא �i$j�Oא ����FD�53��g�N<�tאل��P �،�QH�T3�U���אlWS�n�Dد��F�D9���� �K^3א��KLن�א'Pא���W א�i$D�Y��hدوאل�،�q�\א���.����.�א�دوא�hوH{�����ج�\�א. �

� ��iW!���$`���:� א��3�f$k�،�hو%$�hא������ج��q�\א���.��q��5P>���� �@�WSא�!�lWS�U�K��،�a7א\�

� ^3�� �� �KPTא����q� ��:� �� �

� �� �

�� �� �KPTא�����א�hوא �h�JOא\'%'د�3�iא.q�\א�K���MQC:� �� �

� �� �

U����H�' ������NPF�!�:Nא�H���Iא�s!���3א.�����b�Iوq�3��� ���3�Add Watchא.�� �KPTא���:� �� �

Page 526: خطوة بخطوة مع فيجوال بسيك دوت نت

526

� �� �

�� �� �KPTא���l$�������7'م���3�iW!�����Oא.������b�I:�و:� �� �

� �� �� �� �

للتوزيعتجهيز البرامج .2� �

r�5א�ن��� ،� �N���53א�� �N�gن�.$�א��'P+$م�.��9�$�$�אن����א\� ���ن�%�gز �و\� ����א\��+$م�، �g�7N � �%�� KF��� �א�ن ��7'م KF�� � �N � �א ز�3 h��'P\א� �!��� n�D� '�dPublish� KP,� n�D� 23��4� �Setup7'م�� �

��Fj�7 3��,����Q�،�iذ ���53א�:��qT+$م�����א\Build-Publish.�� �� �−:� ���TN �$���5PאQ$R����.��Q$�א\�Pن�א W��'د�א�،�C:\ahmed� ^3�.� �−�H��+N��،�:N3�23��4 ���.����Q$R$�א\�Pن�א W��'د� �F���Y3$+���K�F�+��א�� ��.�U�CD-DVDא��i'1א �−�i'1א��lWS�KS�{�9و��� W���7!�Y�3ن��P3�U�h�^Q$R� ���Rא �5D�23��4אQن�C�U�G�����Nذא����.� �−�aqsא�Finish.�� �� �

Page 527: خطوة بخطوة مع فيجوال بسيك دوت نت

527

−�g{��� z�,�K�� $`���� אH��I��Q���5D�hא�hא\�Tوع����q� �<��KFD��NP���א ،� l�Publish� ^3� ،��:! Iو�C���!�sא�h�O�3�YFM� .� �

� �

� �� �−�n�D�aqM ����.�،�KF�� ����������%��Sא�bא�ن�א�Setup�U�23��4 ��Program Filesو�'���Q�f��K�Fא

��.و<��NPא ����D�23��4��:�3�K3د�%$א �� �−�K^3� �א\'s'ع lWS�K%C� 53� �3$7�� �^�C�hدوאC� ���NP>�installshildא��+$אم ��setup factory��MQCو ،�

���T3و�h�Dאل���S�!'��t ��Uא �O`'אل���'دQ'��53א ��NP>Setup��Fj�7א�O��9د�53�iא�j�V*�א\���3$7אNew Project���FD�h�,�,و���U��PR� ������P'ن�.�دHא��n�Dא��:! Iو�h��.�O�9وא�K�FR� �:�א �

� �

Page 528: خطوة بخطوة مع فيجوال بسيك دوت نت

528

� �� �

3. net.Vbvs # C � �

�tq �n�D��3'אز�KPTد�����F�Dא��Nو�Hد�iZ!אل�'���(�9�' C#و��Vb.net�:�T �،�!��S��Fא O'אHق�Cو�Cو%:�א��FgN��.1�9 ق�אل���Qא$� C�$�Nو��17�����9א�.net.�� �

� �3��د¨�אل��H'g&��Qא$��U.net������C#�hذא�������q ����e��!'و��PQ�3�������\و�،�i$F��\א��q� ���Sא

�:g��,��Q3'אز��q ��Q'1����g��43���§�9C��!'و��PQ�3�hCH�،���אل���'`�!��Sو��.' �'ق�وא��U�0ذ ��א3��د¨�אل��USyntexאل����1�� �gNP �%�net�hz.��03א �O`'אل������و �NS�53� ،�VB.net+���4����t ���وא

��$�����gNو��Yא ���qא $7<��،�א��'�Xא �VB�a7!�����Pو �X'��]��5Pאل�#�53�A�ICCאل�' �:�אT �،�وWSא�S'�א�9��@� .� �

� ��Y��:�T �!���5���0�1א����lz�O،�א��S��NS�Kg'���د�א�VB.net��Fg!�h�! �I9و�#Cو Wא��ن���و ��Nא ��5D�E$Rא

�$��C��د�א �Oو.N��،�i$� ��qوא��Q�gN �...��X'��C�U�hא �U�����Pא �� �

Page 529: خطوة بخطوة مع فيجوال بسيك دوت نت

529

��1��K���I��U؛��'���C�@N��9�XH�,����2343ن��C�:�0Mو�9*�

�*�������:�hאq�\א�oQ�����7Q��:� �� �

#C كودint x; ClassName x=new ClassName()

� � VB كود

Dim X as Integer Dim X as ClassName=new ClassName()

�*��^ ���:Uوط��T ��א���U�VB.net�Gא����=�U��3CC#�G��3==��א�� � �$م�א\��وא����F��،�=!�53�9$��i`$�א<>.�

H�:��qא����*��$F���VB.net�K^3�KB�n�D�End�hאzא�%9א�U��g3$+��و��h�JO �:�و�3��S^ �وא �� �

VB كودif x=1 Then End if

�U��S${��FN��C#אم�א�.'אس�$+�����:� �� �

#C كودif(x==1) { }

� ��U�� Wو�h�JO �:�وא�%9אzאMQC�h��א �

� � #C كود

using System Namespace MyNameSpace { class HelloWorld { static void Main(string[] args) { System.Console.WriteLine("Hello World")

Page 530: خطوة بخطوة مع فيجوال بسيك دوت نت

530

} } }

� � VB كود

Imports System Namespace MyNameSpace Class HelloWorld 'Entry point which delegates to C-style main Private Function Public Overloads Shared Sub Main() Main(System.Environment.GetCommandLineArgs()) End Sub Overloads Shared Sub Main(args() As String) System.Console.WriteLine("Hello World") End Sub 'Main End Class 'HelloWorld End Namespace 'MyNameSpace

�!�.||�&&��'��f��+$م�#��f'��And,Or,Not,OrElse�U��FN���C��+$م�3�I.net��U�،��!�`'אل������*�

+�.�א��+$م�#�Cو �0B�$ND&�U�VB.net�U�5Pא VN'ص�א��+$م�:���د���*�

�*�������:else if�U�C#��S�ElseIf�U�VB.net�

�*��N3���:ع�'s'3�U��NOא����F�End�$F�����QHא�P� :��n�Dא�.'אس���O!�،�C#��MQCא�h�7�Lא

� � #C كود

for (i = 2; i < = 10; i += 2) { System.Console.WriteLine(i); System.Console.WriteLine(i*10); }

� ���'���1���gوא�$�<�5Pא�5D�z�Nq��9א�.'אس����Uو:� �

� � #C كود

for (i = 2; i < = 10; i += 2) System.Console.WriteLine(i);

�U��3CVB.netא�$�'3� P,�WI]���g!�:� �

� �

Page 531: خطوة بخطوة مع فيجوال بسيك دوت نت

531

VB كودFor c = 2 To 10 Step 2 System.Console.WriteLine(c) Next

� ���QHא�P� ��.��א�h�7�Lא ����N .�و�for each�:! Iو�Whileو�O@�א�����3

��h�!'OVFو:�������*�����N ��.Q�:! I�[]�53�9$��()�UVB.net��+$م�א 7'س��� �� �

#C كودint[] nums = {1, 2, 3}; for (int i = 0; i < nums.Length; i++) Console.WriteLine(nums[i]);

� � VB كود

Dim nums() As Integer = {1, 2, 3} For i As Integer = 0 To nums.Length - 1 Console.WriteLine(nums(i)) Next

�*� �7�����${�5 Comment�U��1��53��^���VB.net�K^3��/*�*/�UC#�� Wو��،�XML Comments�n�D���gא��hC�.�c�C�53���� .�P'ن��U��3'D$3אb9$א�iHא �7د��3.$�א

�*�UC#��Q'J\��3א � �VR'ل����n�D.��א 7���f'���٪�53�9$�Mod�U�VB.net��F��+$م�א�.

�*�� ��D$��5 VB.netא��+$אم��Bitwise Operations�� ���U�Assignmentאل��@PD�n�D�C#������������ ��ذ.

�����K�5א�� −���3��(�9��F��−�hذא���h�.و�!��Sو�،��Q'q �h�.و�!��g�'��A$����9�h�.و�O �!¦ن��lWSא

�i�\����F�.�،س�H$ ����Q�g��U���3����gsא�aא�H�n�D�����ول استعراض النقاط ولكن اآلن لنحا،��� .غير تلك المهتمة بأسلوب الكتابة

�*��S�h�.و�O ����Ccase sensitive�U�:�Cول�����א�،�VB.netن�¦!�Ahmed��g�O���S�ahmed�9��3�'Sو�

�A'��_�� �U��qא�C�U�$%'QBasic�G�Dم�C�i��3א�WSذא���ن����F�!د�$�Cن�C�0�1��C�9و�،�.

�U�hא���VB.net�−V�I����H�−:�

�.#�Cو �@�3'%'د�3�VB.net�U'%'د�optional parameters�Uد��Dאل�*�

�*with�U3'%'د��VB.net�U3'%'د��@� �.#�Cو

Page 532: خطوة بخطوة مع فيجوال بسيك دوت نت

532

�*Catch ... When�U�i3'%'د�VB.net���Sو��z�1Iא��iZ�O �KM!C��3�(�����

�P'د�7QVB.net�KF���Compile�U'م�*��BackGround�h�7��1� �iو ��U�G�D��gNP،�و�U�i��3�lWSאqV א�'Qאل���'د'`�O ��za��ªא ������i�P 1���h�7א� .א

�U�hא���C#�−�H�V�Iא��−:�

� *� �D$QC#� �����f��Q� �3�unsigned types�U� �MQC� �<��NPא��+$א3: �3� 'Sو� ،�VB.netא�z�%�@� � :NP �و

��q� .א�����53��א

�*�U�A'.א��i��\אC#�U��!'���9�t �C�unmaneged code��3و���S�unsafeא ������v�F+$אم��VB.netوא�n�D�KF� ��א����QPointers� H'V �وא����3�K^3�h9���i$D�U�����א �.�!��� ���OQ� �3� ،�:! Iو�image

processing�:! Iو�.

�K�%����i��\א�lWS�K� ���C#�53وQ�.�C�++�A'��\א��O+N3��03'د���g�3����������53Low Level Code��5Q^P� �K^3א��H���I9א�XH�,����K�®��3�'Sو.

�*�${�5 incrementو��decrement�U�VB.net�� �� ������������������1M'د��� �KPTא�:� �� �

VB كودA=A+1 A-=1

�U��FN��C#�� �� �KPTא���� W��7م�� �:�<��NPא �

� � #C كود

A++ A—

� �*���bن�}$�א��C��NP>�sizeof�U�C#��U��S${�5 ��FN��VB.net.�

��F�.�hذא���� � �g���C�U��g!��(�9� �Fو�� ،� א^�� �g�3�K3������t ��و��sא�h�! �I9وא �3'%�א ��ن�WSא

�i��.

ماذا أختار ؟: في النهاية

�53� 7�N3��Nذא���VB 6.0�X�����!�VB.net�X�i4I��Q$ �و�ذא�#���3C�C/C++/Java�X�����!�Cذא������

�����NQ��3�H���Iא�U������]!���4 ���Q$%��N$א����Uل�א��,HC��Nو�ن��C#�a7!��V+,�C���.� �

Page 533: خطوة بخطوة مع فيجوال بسيك دوت نت

533

�3�0.'3�53�o�\א�אWS�h�.و�O� �K3�����s'� �:�PQو�'!�� �

� � رابط

308470/kb/com.microsoft.support://http

� �

Mono إلىدمةمق .4� �

n�D�$F���� ���D�U VM n�D�KF_�א��!������.� �g��®�W '���ن�� %��אو�!�ن� VM א��P3ن���D: وא�n���WS�Gא�א\'s'ع�Q�K��7\א�U�،�oQو�PQ�3 �hא�����SC�53ل����K��n�D�:NP ��W�ON��U�zaא��!��و ����א

. א��!�

Uو _�D�K��7\א�_�� �.���� C MFCو #C و Microsoft �����h�`�N3 Visual Basic א� �n�D�A'��KF��

�. �)��א ��PQ�3�53�K�qTو�'!� �

4א����� ��3�K�qT���(��n�D�KF�$دS��S�g,C�،�i' و �03�5Pא '.�����7$م���ق��F�� �hدوאCو Mono

� وs'3�'S'ع�Lא��N�Hد .� �

��U Mono �Rא 'א.�0���nא ��OQ�H$V3�$%C�_��(R$��[نb�3'א!03��7 א .net 200803��7!�3'א��gNP �،�و

.net 2.0 KP,�n�D�zא'� ASP.net 23و���אC �aوא�H�i$D�h$%و�� 1��C���7و�.'א�h������$DوI !:�،�و�����ذ��� �Lא�h9و�RF� ��g��7��G��C����1������k'b'��$�O���!א'�� �−��g���@� ��NP>�K��n�D�،� �n�Dא $I'ل−�������\�aא�� ��WSHא�אI9א� :� �

� � رابط

http://www.mono-project.com/plans

�.����� KF�� Download K �53א\'.�0א Mono ل�G����t ،�وI ل��3א��Kא ��H���I����.�K�FRא ��h��N7א

Mono �g�3�KF� �� .� �

T����S�����^ ��`$��Fj�.�U�lא 4א�23،���`$� وא W Mono א��ص���ل �K�q Command Lineאلא\�����א�� �� ��א�دوא�hא����: �5Fs�53א�دوא�hא\�� �

Page 534: خطوة بخطوة مع فيجوال بسيك دوت نت

534

mcs/gmcs: XH�,���� ���Q��3'�� �

Vbnc: אل'`�O� ���Q��3'� ����� �ilasm/ilasm2:K ���Q��3'� CIL� �

� �gN3� i$��� - �א ���,�F��XH^�ل−��Kوא �g�3�K3��� �א ��Qאل� 03� �7����K3��� ��� �NF.� �F Visual Studio

Command Line Y��$��' ��D$Qא ��h��N7א�$�i$Qא\'%'دC�'S gmcs iن mcs و�gmcs ���7��،�א H�Oق�א

_�D�03�.net 2.0.�� �

�����o�3ض�ZON sample.cs د'��n�D�'�d C# ،%$א��د�D אل���O���. Command Line Xא��ص�

Mono�Gא������ �� ��א���3א � :� �

كودgmcs /target:library /out:Sample.dll Sample.cs

� �a7!و !

KFD��NP>� ،�K�qT)�م����א�n�D�KF�� � ����.� ���P3��Q$ ��R�bא�ن�א build ¤ exe 4D� �g��qTو�� �MQא

mono ^3�@PN� �U ...� �� �

��:�nVISUAL STUDIOאل��n�D MonoDevelop �D��Fא ���T3���!��NP>�@PNو�F�������Dل �

Page 535: خطوة بخطوة مع فيجوال بسيك دوت نت

535

� �� �� �

.netبرمجة األجهزة الكفية من خالل .5

�5P ��،�و'F[א�i�g%א�������'S�GQ' 'ج� ��_�א' �$א3��I��،��Q'א��N��sא\���3$7.��Kא �%��S��3�i�gא.��Kא���OP ��؟Pocket PCא �

�K�qT��53��gNP>��QدوH�S�����!�s7�3$م�א�K�qTאم��)�م��$+�������F�����7N�\א�oא�'kא�i�g%C�53��D'F���S

�K�qT� N)�م��g3Windows Mobileم�WSא�א N)�م�،�و��KPTQ)���3א��!�sن�א��F���K�qT� �Windows CEو�)�م�א

2003K�qT� �.�א �n�D�KF���tא�%�i�gא ����OPو��3.��:����g,C)��א �

Page 536: خطوة بخطوة مع فيجوال بسيك دوت نت

536

���Qد�دH�S����e�9� ��OP �א i�g%��!� �QدوH�kא� $��b�n�D� �3CHard Disk��gN3� �M���5P � ،� H'gT\א�nN�\�����53אل� z�%م�$+��QRAMع�'�C�¤�NSو� ،� ���K�qTא��gز iد�Dא� $��� :��D�53�h����� ��H�gد�دQ���3���Q�9���א

.א�23و�)�م�א ��K�qTو��3,��:�� �+��5Qא ��A�ICROM4��+$م�

���OP  %�i�gא�:�FD�cNP>و�3ذא�Pocket PCل� I�53�.net؟�

�F��+$م��'א��C�zن��h�3$I���7R� ���I�53�0�1 ل� ��qא ���4א�s!����א��23��+$م�C%�א�53��N��3�zא��gز�� a���� �א Wא��i(א��+$אم �א��+$אم ($Dא'.� 5Q�§و� �SW�ONو�� �א 4א23 5Q�+� �*��� �א��3 ���ن �Cو ،� h����� �א

3א�3^ �وא�%�i�gא �U����'Vא��gز��P .����+$אم�א

���C$�C�o؟

��3C�Hز�n�D�aqM ���5D�Gא���� ��H��g(Q�23�����KF�7'م��N��،�������KP�.

1−�'Qאل���'د'`�O �.�K�qT����.�Visual Studio .netא

2−�H���I����.�VB��4 .�C���k I�53و�א ���qא ��t'د�א

3−� H���I��� �.�Smart Device� H���I��� �.� ��� �و53 ،�Pocket PC 2003� �Cو�C�Smartphone 2003وWindows CE 5.0�:��D�KF� ���Gא��gز�א W��'د�א�.

4−�H���I����.�G��N\א���7 �.��Device Application�$�א�H���Iא

5−�GR����.�Buttonد'P ��Uدא�I:���53א�دوא�h،�و.���WS�����Pא�א

� � #C كود

MessageBox.Show("Welcome...");

� � VB كود

MessageBox.Show("Welcome...")

6−�n�D�aqM ����.�F5ع�אل�'��H��Iא�deploy�H���I����.و�C�،�:��D�KF� ���Gא��gز�א W��'د�א�:�!�G����W �א�~ ��`����!�PC�a7'ع��n�D�KF�Qא�.

7�−���KF����F.�$7 3��,��23��exe�9�،�iא�ول�،�<�K7���MQC��NPא\��oא �W�ON��43و¤�،��:��qTز�و��gא�����

��אن�PQ'ن��Lא�lWS�U�$�.net framework��OP ��.3�Pocket PC'%'دא��n�Dא��gز�א �� � ������N��03�K3–�א\�gم�א�������−8����V�+\א������S��Q$��7� א��gز��������א ��t�'د�U��g��D�hא ���4א

��,�T �Q$R$�א}��lא �U��,�Tא�%�i�gא C�5P>�tن����g�!�G�7Nא� ^F!�،�:! Iو:� �

Page 537: خطوة بخطوة مع فيجوال بسيك دوت نت

537

� � #C كود

SystemSettings.ScreenOrientation = ScreenOrientation.Angle90;

� � VB كود

SystemSettings.ScreenOrientation = ScreenOrientation.Angle90

�YPF� ��:Touch Keyboardو �� �

#C كودInputPanel1.Enabled = True;

� � VB كود

InputPanel1.Enabled = True

�KF� �`�gز���$�א��אد�Resetو3^ ��coredll.dll:�� �

� � #C كود

private int CTL_CODE(int DeviceType, int Func, int Method, int Access) { return (DeviceType << 16) | (Access << 14) | (Func << 2) | Method; } private int ResetPocketPC() { const int FILE_DEVICE_HAL = 257; const int METHOD_BUFFERED = 0; const int FILE_ANY_ACCESS = 0; int bytesReturned = 0; int IOCTL_HAL_REBOOT; IOCTL_HAL_REBOOT = CTL_CODE(FILE_DEVICE_HAL, 15, METHOD_BUFFERED, FILE_ANY_ACCESS); return KernelIoControl(IOCTL_HAL_REBOOT, IntPtr.Zero, 0, IntPtr.Zero, 0, bytesReturned); }

� � VB كود

Private Function CTL_CODE(ByVal DeviceType As Integer, ByVal Func As Integer, ByVal Method As Integer, ByVal Access As Integer) As Integer Return (DeviceType << 16) Or (Access << 14) Or (Func << 2) Or Method

Page 538: خطوة بخطوة مع فيجوال بسيك دوت نت

538

End Function Private Function ResetPocketPC() As Integer Const FILE_DEVICE_HAL As Integer = &H101 Const METHOD_BUFFERED As Integer = 0 Const FILE_ANY_ACCESS As Integer = 0 Dim bytesReturned As Integer = 0 Dim IOCTL_HAL_REBOOT As Integer IOCTL_HAL_REBOOT = CTL_CODE(FILE_DEVICE_HAL, 15, METHOD_BUFFERED, FILE_ANY_ACCESS) Return KernelIoControl(IOCTL_HAL_REBOOT, IntPtr.Zero, 0, IntPtr.Zero, 0, bytesReturned) End Function

� � ؟net.كيف اكمل البرمجة من خالل

� �� �!¦ن $��]��KP�234א ���n�D�KF�Q�23��4א ���7א� �NPF\א� £�V ��C�53��aא $�Q�Pocket PC��1M���� �F�!� ،�Q�+� �א �א ��9���VN+$אم h�O�\א� �א��+$אم �NP>� ���� h����� �א $Dא'.� 03� K3��� �وא �Q$א�� �א 4א23 U� 5

�h�O�3و�C�،�h������$D7'א�XML��53'ع��h����� �.�SQL Server CEو���n.'אD$�א

aא�� 3����,�WS�n�D�iא�אMQCل�'I$ �$��NP>:N3�zא� ��:���PQ�3�53و�'!�� �

� � رابط

aspx.458721aa/library/us-en/com.microsoft.2msdn://http

� �� �

� �� �� �� �� �� �� �� �

Page 539: خطوة بخطوة مع فيجوال بسيك دوت نت

539

� �� �� �� �� �� �� �� �� �� �� �� �� �

ASP.netالبرمجة باستخدام � �� �� �� �� �� �� �� �� �� �� �� �� �

� �

الباب

22

Page 540: خطوة بخطوة مع فيجوال بسيك دوت نت

540

مقدمة إلى تطوير المواقع .1� �

�אل _�D�U�E$R��� �N�� �א $Hوس�، 53� nM3� �F�! Console �وא ~Desktop Applications��lWS� �وI ل ،U�n���و ،� W�ON�� � $��وא �%�gز ��n�Dو%'د $F���� �N��K���n�D א\�א $F��Q� 0s' �א ���ن $7!� �P�,� �و%'د � ��

5Qز�gא��Y��hل���������web service��،��NQCH��F אو�א\�U���H�Tא\�Vد�Hאو�א�V�9ل��h���FD Xא��Hل�وא��7����،�و Wא�.�server side languages�K لאو��D_�א ASP.net א�D�03��3_�אل���o����0s' �!��3'FD ��Qא$� א

��Zא�'אع�3'א.�0א���n�D�f��אن����G� :� � ���53��D'F��5D�iHא �'�����h�O�b+$אم�:�3'א.�������0-D�0.א\'א�lWS�HTML�5P>�، �h�, !و�H'bא��+$אم�

U�����\'ع��53א�'אع�א��א�$%'Q�9�5P �. �WSא�א\'.0وI !:�و �-��K�F� ��0����א�'אع:3'.�0دND���P�3�NQ$�א�F�Q�0.ع��53א\'א'N א\�����و �G��%�U�K(���gNPא �WS� �K�Fא�א

�5Pא ��ROVא ���tא��SאVBScript �KF����3�3 و �lWS�U���Q�،�a7! Scripts K^3 Javaא\'א.�0א��+$אم�،a7!א����¤$ND .� �

!��و��KVא���!�n�D�a7א WS�2��Nא�א N'ع:د���P3�NQ 3'א.�0-� ������:��Uא �����3�KFD���Q� �5אن�P>�W א@� 1����א����Zو��nF�Q�� �Lא�lWS�U�،����^ �. 3'.�0א�PQ ��Z'ن��53א N'ع�א�ول�وא �

: مثال

�ROb ����n�D�'����������^ ��53א N'ع�א �ROb��S��3�3א� �Sא���t �א��! ��Q$¤�א9 ZPو���א ��אوא�3

53�:! I7'ل�وLא�$אول�وא���� ��!�sא���Q�P� HTML 0.א' �U�5Pא� ، �lWg���ROV !¦ن���lWS�K�PTאiz�7���3א�.�t !��א� ��א�$אول�א �t א �h���FD������Q���5D�z�%��q�Vא���P,و�h����� ����.'אD$�א

:! Iو�� �. ��'��n�Dא Q4$�א 'אHد� �

Hد�.� Wא��lWS�Uא ��ROVא�����!� ���g،�و ���NP����Q¯H�n�D� �i$S�T3�0�1א�'אد�א ���qא �������e�tאa7!��!� ����אن��h���FDא\����������n�Dא�a7!�2j��N �. א �

� � : اإلنترنت دورة حياة تطبيق

X� C$��Q� �3� 0.'3� �N'אن� � �Iאد� ���و�'�'ل - //:http {`�د �����+$م �א�� c�Q� �3� 'Sو http - 7'م�Q

،�7Q'م�WSא�אل DNS وאH�V�Iא������Domain Name Server א �N'אن����X�f��Q��3 'ل�����Hل�WSאא 4و�'�

Page 541: خطوة بخطوة مع فيجوال بسيك دوت نت

541

DNSאن�'N� ��g����P���F.�t ��n�D IP Gא���I���Zص���ل �KQ'R�� Physicalא �����Pא�b �KP,�،�0.'\א ���F^�ل DNS אل�� �: PQ'ن��� �KPTא �

� �

������P39ن�3��!�bא�ن�א IP ��!���Qא�א\'.�0،�א�ن�Wk���F\א port - ن�'PQ��3� �� ��80�−�Gل�����Hא���Qو�:��D���1���3�'Sא�א\'.�0وWS��������\א�http Request.�� �

���'ن�א\'.0���U static د���� ���Q�،�ROVא �ROV ���'ن�א���U��3א�،�a7!���'�1\א dynamic �����3���Q

������hא\�1'�� ��. http Response وא��Hل���RObא ����2j��Nא\��+$م�و��D���1���3�'S: א �� �

مالحظة

�NFgQ��3و�،�KFD�iHدو�K�'و����KP 'S��NS http a7!

� �

: Client Side Web Sites مواقع العميل

���g���q%$א�<��NPא ���I��g��D�f ل�א.��D���oV��53�K ،�وWS� HTML �Sא�א N'ع��$אQX��!��3��Q����م ^3�aא�� �: WS��Q���5Dא�א �

� � رابط

www.html4arab.com

X�zא�23א��$א���H'g&�03و Front Page X�z�gوא�� Dream Waver �א\'.�0دون�א�KFD����P3�����bא�،�.��Q���5Dא9دوאHTML a7!�h 3��!����ل �

����4���א�j�V*�،�א�5Fs��MQאل vbscript אو Java אMQ�����ج�ل HTML אل�_�D�${ Forms �W א

Kbא'� ����א\��!��WS�Uא�א\'s'ع�،�<�3��NPא%���א $ ���53��NPFא Hس�03א ��_�א��H%��،�و���ج�

� ��Qא$���� �� ��:−�3�53$و�vbscript�–�t~��א �� �

Page 542: خطوة بخطوة مع فيجوال بسيك دوت نت

542

رابط

html.vbscript/08/2008/com.blogspot.technical-ahmedgamal://http

K ��Qא$���� �� ��: javascript وא $Hس�א �� �

رابط

asp.default/JS/com.schools3w.www://http

�9�،�a7!�h�����9�����3وא�ن�א�'.�0א���Cא�א¡�لWS�U�^P �� ����N3�Gא�� ...� �� �

: Web Service وخدمة الويب Web Application الفرق بين تطبيق الويب -�'S�GQ' 1����א�h�ROV ���53��D'F��5D�iHאD� ��b�I�i����iHدو��k�t ������hא و�h�O�3א�9'אد�و.'אD$�א

��Q�،�23�����א�K^3��g�^3 :! Iو�Eא$�� !���gRوא� .��gو��W�ONא � -�K�7�����3$I�5D�iH��D��g!�GQ' ������hو���$�h���FD�����$����Sא\�����،����Qא ����K3 א��3$I��3א ����א

�53��g�3������qא� a7!�hH'� �. .�د�n�D�iHא 'b'ل����א���gوH.��א � : IIS ـال

h���4א��ص����!� �'אASP.net �n�D�z ،�وو%'د�l,�ط�א����� ����KF'د¤�אل ASP.net و S ASP'�אn�Dو�C��V+T 3'.���9��g% �7ز¤�א�:��D�o�M����W !��א� �. א �

KF����F.���'� setup K visual studio אل�K�FR����F.א����c�Q IIS K�FR����F.���]!��.$� אو�

WebDev.WebServer.exe�W ��ذא�����N'د�א �n�D���4א\�KFTQ IIS i�POאل وא �א�3 ، Notepad � ^3KFD�53�$�� ! setup �PR� ���א' �H���Iא��Q���5D�� :�،�وذ Control Panel - 23א���� Add א�s!��وאزא

And Remove Programmesوز�$NQو�h��'P3��!�sא�ZIوא�Add Windows Compomnent�، �53�$`���gNFs Internet Inforamtion Services אل�'Sو�IIS�–�K�qT� ��7����G)�م�אQ�1 �אq����−.�� �

� �

: تجارب بسيطة

Page 543: خطوة بخطوة مع فيجوال بسيك دوت نت

543

�. ��O� Notepad ن'P� ��g��F�����.�،�$Q$% index.html h�Q'�[א�����P���.���� ^3 � �� �: ��!��gא �

كود<html> <head> <title>My First Pgae</title> </head> <body> <center><img src="http://l.yimg.com/a/i/ww/beta/y3.gif"></centeR> <br> <font color=red size=3>Yahoo!</font> <br> <a href="http://www.yahoo.com">Link Here</a> </body> </html>

qT��X�%� ���Zא���RObאول��lWS�،�¤43و�،��g��Dא\�دوج��aqM ���i�,��3��g�� .� �

h����� ��9د�Iل�א�� : א�ن��7N'م������א H'Oم�א

� �� �: א P'د�א��ص��Wgא�א H'Oم��� � كود

<html><head> <title>My First Pgae</title> </head> <body> <h2>Welcome !!</h2> <br> <form name="form1"> <table border=0> <tr> <td>

Page 544: خطوة بخطوة مع فيجوال بسيك دوت نت

544

Name </td> <td> <input type=text name=textname size=10> </td></tr> <tr> <td> Password </td> <td> <input type=password name=textpass size=10> </td></tr> </table> <br> <input name="button1" type=button value="do anything"();"> &nbsp;&nbsp;&nbsp; <input type=reset value="Clear"> </form> </body></html>

� � '�.�م���د�Iل���� وא�ن���Q$�אن��7'م��� �[�C�53�$ن�א\��+$م�.�م���د�Iل�������U�hא H'Oم�،��S�g(��f'�!�h��

GSWNא��W �،��MQא��,�T ������Vو�n�Dא��H�U�: H�� Button1 � �� �KPTא�����V� �lqو� :� �

كود<input name="button1" type=button value="do anything" onClick="doCheck();">

� Script و��I��U����53א 7��f'���ROV'م�������Pאل�� �: א �

كود<script language="javascript"> function doCheck() { if(form1.textname.value!="" || form1.textpass.value!="") { alert(form1.textname.value); document.write(form1.textpass.value); } else alert("enter data first !"); } </script>

Page 545: خطوة بخطوة مع فيجوال بسيك دوت نت

545

: Visual Studio استخدام

��K7NN�����5+$אم�P �و �1��� �א ���`� �א lWS�@O ASP.net ل I�53�Visual Studioאل��'`�O �.������Oא ،

$Q$%�GQو�H���I����.و�'Qد'�� Website ZIא��� ASP.net Web Site :�

: א������ O@�א H'Oم�و �53�5Pא9دوאhא�ن�.��������

Page 546: خطوة بخطوة مع فيجوال بسيك دوت نت

546

� �

مالحظة ASP.net وليست ادوات HTML~ تنس اننا حتى اللحظة نتعامل مع ادوات

� �

n�Dא\�دوج��aqM 3��,�i و.��������Pא�وאButton �3 وND$7���3'م��'�0sא P'د�،�.���� :

Page 547: خطوة بخطوة مع فيجوال بسيك دوت نت

547

Kאو����Q'د��'P �'�GQא��KOא ��NP> �ROVא����אض�א ����FVوא� : وא�$��Q���5D��FgN3�iא

�a7!�...U�،��1��� �����N���{��S�lWS����� 03�K3א���C$�N�7دم�� ��. ASP.net א $Hس�א �� �

net.ASPمقدمة إلى .2� �

03�K3��� �U Visual Studioد��N�Hא �����%����Nא��GQو�h�ROb�KFDو �X�`Nس��H$ �WS�U�،�:��D�Oא�א�. ��03א\'א.�0א ���N���{���D�Oא�و� �

: ASP.net تجربة

hא�دوא���O���. Standerd *��0��3�������.� ، TextBox אن'ND�iوאدא Label �3C� Hوز Button �Hز�U�،

� �� �: א������P���.��3א P'د�א �� �

#C كودLabel1.Text= TextBox1.Text;

� �

Page 548: خطوة بخطوة مع فيجوال بسيك دوت نت

548

� � VB كود

Label1.Text= TextBox1.Text

�X�%א...�و�U�RObאول��KF����F.�$7 'א.�0 ASP.net � .� �

ماذا حدث فعليا ؟

'�!���ROb��Rאل HTML نC�$`�� د'���Q$ HTML �'S����3א.�0!¦ن�' �Dد�'�d�H'!�n�Dم�،��UאEو$� Submit �� �e��!� !��،�و�n�D�¤�NSא� ����.�م�����Hل�������hא H'Oم���������3א��!� 3����� א��� ���ن�(�'�0��3�A אو '�d Ahmed��n�Dא]�'�h�� Label Aو��א�Dد�iא ��ROVא �t��'�n�Dא �Qא

��Kא��H9ل�،� '��i$S�T3����%א P'د.�*N ���53א P'د א��ص��� HTML �ROV א�� �: א �N}����`$�א���zא �� �

كود<p> <span id="Label1">Ahmed</span> </p> <p> <input name="TextBox1" type="text" value="Ahmed" id="TextBox1" /> </p> <p> <input type="submit" name="Button1" value="Button" id="Button1" /> </p>

� ����2��N ������h،�و��א�Dد�iא !��!a7א�9'אد�وI !: ،�א��F�� Label1��3ذ�����،�3��e�����א� �. �!�U��gא �

� � . انواع ارسال البيانات

C�U Form ل��H9�Y�7Q���¤�NS �S�h����� �GET ���Q و POST א ��sאZ!9א��Sא�و��و� �7Q�1 ��Uא ،

3��,��i،�אForm U��3 א��Hل�������hאل GETم�א��ص�H'O ���N !����אND�U��k��H'אن�א\��KQ$���X�%�،��OVא� �KPTא�����V� � � :� �

� � كود

<form id="form1" runat="server" method="get">

� ��� �� 9��ªא �iH'Vא�،�A�IC�i�3�0.'\א����`����. :

Page 549: خطوة بخطوة مع فيجوال بسيك دوت نت

549

�0�$ودא���n�D'ل�א H'Oم��U��3Cא �N'אن�،� ����Q�،�A����Fא��Hل���!��(�'�h�Qא H'OمM��h�ROV�\3���)��א���� ���U POST .�'د�א�¤�NS�����! .� �

�F�!�iz��7.�אQ����gN3�i$� �KPوא �z�,د���3ن��.�h�3א�U�:��D�f�����$.��3�'Sد�،�و'P �����VON3��g�zא�.�hدHא�'

�. ���� א� �� �

Code Behind:

3�h�g&�t א �KV!��S��>$7א P'د��5Dא ��5Fs�530 ASP.net 5D ASP �U�،���FVא\��Fא�hא�$�i$Qא�ROb ASP Classic אWS�A����N���>$. ^3د�'P �: א �

� � كود

<% v_Id = request.querystring("id") response.write "<form action=test7.asp?id=" & v_id & " method=post>" response.write("<font color=red><b><center>Write your C.V.</center></b></font><br>") %> <table> <tr><td>Computer Skills :</td><td> <input type=text name=v_cs size=30></td></tr> <tr><td>Characteristics :</td><td> <input type=text name=v_char size=30></td></tr> <tr><td>Interest's :</td><td>

Page 550: خطوة بخطوة مع فيجوال بسيك دوت نت

550

<input type=text name= v_inter size=30></td></tr> <tr><td>Language Skills :</td><td> <input type=text name=v_ls size=30></td></tr> <tr><td>Education :</td><td> <textarea name=v_edu cols =30 rows=6>write your Study Field here</textarea></td</tr> <tr><td>Experince :</td><td> <textarea name=v_exp cols =30 rows=6>write your Experiences here</textarea></td</tr> </table><br> <hr width=75%> <center> <font color=red><b><center>Join Demand</center></b></font><br> <textarea name=v_Join cols=40 rows=9 WRAP=physical></textarea><br><br> <input type=submit value= Continue> <input type=reset value=Erase> </center> </form>

�U��3C ASP.net $�3אد���o�3�U�¤אد'�C��R�b�! *.cs U���FV� ���אbא�Y��U ل���$�3אد��N3�o�3

*.aspx :�� �

o�3�U��gد��n�Dא�Hد�.�� و�����ذ ����3ز^P ���ذ ��و��3��7Q����Sزאل���g�MOQא��ن�،�وאMQ��ووא�$��ن�א����Uج����אل .$��o�3����1� �� ASP د�אل�����א�'א aspx א9���ن��T�\�0אQH�T\א�U��b'VI .� �

� �5P �$م���KFD$א�KIو ���K�gא�n�D��39א\�234،�و��Fb� �!�،د�'P �����ذ ���K(Qא��'Vx �X'ص�א�z�OIא

�$�7��iط�G�א��i$��: א ��ROb�U�����Pوא � -���C�3� ��� �RObل� I�53� �g��D�KF� �U وא W�cs - KF�Q.* ���ج� '��0s���א�9'אد�א ��9�t���0�1א

� �Q���0�1אن�H$Q¤�ذ��. - �T3وع�� �-�Y�4\א�Y��K7N �. א��U�Kgא �'ز�0Qوא �

-�$� ���H� Visualאن−!�a7 وO��U@�א '.��א��U�Kgא ��$�KQ$��!�،�KQא�����G�1�Q�K7א ��$�o�3�U�KQوא

Studio �5D��F�Iو��g��. }��� 7Q$م� ���i��3א ��$�KQא\��,����9אن�D'א. �

Page 551: خطوة بخطوة مع فيجوال بسيك دوت نت

551

-�� Wאل و�����FD�U�Kgא���S Deploy ع's'3�'Sو���� �א �gM���n�D�i$F��3�h�O�3م�و%'د�$� ��N�Hد

� �� . א

� �

: ASP.net مشروع المكونات

�אل �OV����F.� ' Website Directory �h�O�\� �!�sא� '�d� �א�: $`��� ،� �OV�\א�Y>�n�D� א\'%'دhא¡�$א�n�D��Dو�T3 ��� �� ������7 �g����P−א '�_��3�5P'%'د�lWg!�iא�z��9א�n��� − :� �

App_Browsers�:�n�D�'�d :�����P3א�n�D�z�N���OV�3�K��03�K3��و����OV�\ع�א'��*N�7��t �. א\��h�Oא �

App_Code�:�'�dh�JO �. א �h�ROb�*§�tא ' Classes GQ��h�O�3�n�Dא�9'אد�وא �App_Data�:�h����� �. '�d��h�O�3�n�D.'אD$�א �

App_GlobalResources�:�'�� Hد�V\א�h�O�3�n�D *.resx .�� �App_Themes�:��g(\���c���t �. وא ����h Qא���T\����bوع '�d��n�Dא\��h�Oא �

App_WebReferences:����و%'د���و��� ���U Proxy 'ع��53אل��א�אو Web Service���g3$+��Q�NS��g�sو���Q��7��1� .� �

Bin�:�n�D�'�d אل�h�O�3�K^3�i�Sא���h�O�\א *.dll �������U��g3א��+$א���Q�t . وא

� �Compilation Cycle - دورة الترجمة :

o�\א� ��'ن � ��� U Single File o�\א� �B��� ��Q� ،:��Q'�)� K3�P�� �J!� �� Class�53� �7�T3

System.Web.UI.Pageل���!�sא��ROV . O������ _aspx@�א

Page 552: خطوة بخطوة مع فيجوال بسيك دوت نت

552

U��3C K ��א��+$א��3�� Mode KF�א��ص�� Code Behind א�1'א�@O��KFD�����!�،23$��5P �hو

:�،� ��Q'��h�O�3�E � InitializeComponent() KFD���Q Compile،�א\��oא\��nFא W�'�d��n�Dאل9�7��א,��7ق�א\��oא\�P'ن�53���� CS + ASPX 53�@� 3��,�N3 System.Web.UI.Page�i:�و .

� �

***�� '7N3�H'V … א

� �

Page .UI.Web. Systemالفئة .3

n�D��JO �: ��53��D'Fא�j�V*�وא �h�JOא �gN3�،���FD�U�¤$�O���t��'��lWSא �� �

�JO �א �ob' �א �Application� 1����و����3*���\'.�0� א�hאq�3�03�K3��� �א �

Cache� �א\'.0 �����03�K3א �Pش�א��ص��Wgא�� �IsPostBack� �KFD���Q��ROV C�$Q$%�53��k Load �z�N���kم�א�:��KS��!��\ Load KFD���Qא

���FD�n�D Submit �ROV ��53���$א� �

Page 553: خطوة بخطوة مع فيجوال بسيك دوت نت

553

MasterPageFile� ��7�9��g��D�f���N��،�Z��\א��ROV ��$Q$�א �Request� � Http Rquest אل��� �،���U��g��D�f���Nא $Hس�א �

Response� � ، Http Response אل��� ���U��g��D�f���Nא $Hس�א �Server 03�K3��� ����bوאل�א��$ !��5Fs א 'b'ل����א� �HttpServerUtility א �

Session �03אل�K3��� 9�7� ،����+$م Session א��g��D�f���N���7و� �+���5Q���א� �Theme ���^ �Q$R$�א−�B���f�D�9א� �: −�ROV ��א��ص���lWgא �

� �� �

Request التعامل مع .3.1

���������FD��S ��g��D�0�1Q�hא��Hل����������FD Request ���hאل �����FD�،��g��D��3��Fg3�W�ONא��Hل�א��!� א��. Request א�� �������hא 7����V+T'م:�3^�ل� ��. WS Requestא�א �7Q�H'م�{�Fg)�א��Hل�(��� �n�D�aqMز�H ��$�אد�Iل�א �

����Q�،�iد�� ��oQ�� Action �gאل�Uא��h����� ،�����Q��F�Q$$�א��'�Xא��H9ل و��Sא ��ROVא ���Q�tא��Hل�א

Get وC Post oQ����U�� �7�����S�N��وذ�,�t ��3^ א�� �: א H'Oم��� �KPTא � كود

<form name="form1" id="form1" action="Process.asp" method = "GET"> ... </form>

U .net � ��.��O�����7Q�1م��H'O �: O@�א N)�م�אMQ��،�و �oQ������Q�5Pא �� �

كود<form id="form1" runat="server">

� ��7Qאن�����F���ROV ��. POST א��H9ل�אZ!9אWS �S���sא��c�Qא!Zא�s��אن�א ��ROVא ���t�'د�!�O���S��g@�א �

�אن � ASP.net � � ����� 9 ��� i�,��3� �Http Rquest 5Fs א 'b'ل ��bא��� lWS��RNe� �gNP �و ،

System.Web.UI.Page.Request��� �� �: وא ��g�!�${�tא $وאل�وא�j�V*�א � � �� �

Page 554: خطوة بخطوة مع فيجوال بسيك دوت نت

554

� �א����b−א $א �ob' �א �ApplicationPath� !� 3���Hא\'.�0� ��n�Dא �

Browser� ��53א\��'h�3 �'ع�����OV�3א\��+$م�،�و��J!��S��'�D�n�D$د�� �Cookies� ��!��3h�O�3� +$م��א\�K�.�53��k��Hא���t �א P'����א �

HttpMethod� �Get אو ���D'� Setא��H9ل� �Form� �� ���U��!�� �: ��Hא���W �Post �'ن�א��H9ل (�'�h�Qא H'Oم�א �

QueryString� ��'ن�א��H9ل� � ���U��!�� � : ��Hא���W �א ���� �h�Q'�) Getא H'Oم� ،�(�'�h�Qאل 7Q'م iz�7א� URL �h�Q'�)�5Fs�53�5P��_� ' �n��� i�,��3�א H'Oم �

IsSecureConnection �!��\ ل�Vא�����1����Q�KS Http 9�53אم��� �RawUrl 3��!��אل URL h�!�sא�ون�א$�� �

ServerVariables hאq�3��D'F��03�K3��� !� א 'b'ل�وא� �א �UserHostAddress �!��3 IP K�F� �א �

UserHostName �!��3K�F�� �o�M��\א���א�� �MapPath() n�D��7�7��H��3����X'�1\א�H��\א�KQ'R7'م������ !� دא� �א �

SaveAs() ªO�!� �h�Q'�) httpאل � ��n�D�o�3�n�Dא �� �

����א�5D���^39א��+$אم و�N����ض Request ...�� �� �

: Form قراءة بيانات التي تم ارسالها في

X'م�א��$+�����N��' Post :�� �� �

#C كودfirstName = Request.Form("txtFirstName");

� � VB كود

firstName = Request.Form("txtFirstName")

X'م�א��$+�����N��' ��: GET و �� �

#C كود

Page 555: خطوة بخطوة مع فيجوال بسيك دوت نت

555

firstName = Request.QueryString ["txtFirstName"];

� � VB كود

firstName = Request.QueryString ("txtFirstName")

3��,������i+$אم�אلو��g�z�0�1.�א��א��������� ID ،وس�H$ �C�U��Nول�א�,��F� ��7Q�1 ��9א�������Rج��lWkא��!�sא�A�IC�h���FD�U .

� �

: معرفة احصائيات المتصفح المرسل� �� �

#C كودstring theInfo = ""; string isAOL = string.Format("Is AOL? {0} <br/>",Request.Browser.AOL); string isActivex = string.Format("Support ActiveX? {0} <br/>",Request.Browser.ActiveXControls); string isBeta= string.Format("Is Beta? {0} <br/>",Request.Browser.Beta); string isJava = string.Format("Support Java Applets? {0} </br>",Request.Browser.JavaApplets); string isCookies = string.Format("Support Cookies? {0} <br/>",Request.Browser.Cookies); string isVB = string.Format("Support VBScript? {0} <br/>",Request.Browser.VBScript);

� � VB كود

Dim theInfo As String = "" Dim isAOL As String = String.Format("Is AOL? {0} <br/>", Request.Browser.AOL) Dim isActivex As String = String.Format("Support ActiveX? {0} <br/>", Request.Browser.ActiveXControls) Dim isBeta As String = String.Format("Is Beta? {0} <br/>", Request.Browser.Beta) Dim isJava As String = String.Format("Support Java Applets? {0} </br>", Request.Browser.JavaApplets) Dim isCookies As String = String.Format("Support Cookies? {0} <br/>", Request.Browser.Cookies) Dim isVB As String = String.Format("Support VBScript? {0} <br/>", Request.Browser.VBScript)

� �

Page 556: خطوة بخطوة مع فيجوال بسيك دوت نت

556

Response التعامل مع .3.2

���F� � ���P� �א ���F� ����Request K^e א� ، ����� ،�A�IC�i�3�K�F� ����א �!� ������53�hא ���K7א ���FD�����W �� ��KPTא �2��Nא�� �F��+$م�،�و��'��n�Dא�j�V*�وא $وאل�א�: ��Hא :� �

� �� �א��C���bو�א $א �ob' �א �

ContentEncoding� �2��N ��)�م�א ���3Zא\��+$م��Uא �Cookiesو� Cache� ��אل����U��F� Request ���P� �و �U�5Pא �����Fא �

IsClientConnected� ��(R� ��[��53�$א���Fא��QHא��Vل�א\��+$م����nא� �Clear() h�Q'�)��!�����3 אل Body وאل Headers� �End() lz�gل�����3א���Hא\�����وא�h���FD�z�gא�a7!�� �

Flush() K�F�� �lل�����3א>�ز��Hא\�����א����FD�f�7Qא�**��دون�א$%�i$�O3**� �Redirect() ���K�F� %$ URL $Q��KQ'א

Write() �ROV ��������n�Dא �� �

��: �n�D Writeא ���������P+$אم 3^�ل �� �� �

#C كودResponse.Write("<u>This is javascript code</u>"); Response.Write("<script>alert('hiiiii');</script>");

� � VB كود

Response.Write("<u>This is javascript code</u>") Response.Write("<script>alert('hiiiii');</script>")

� �

Page 557: خطوة بخطوة مع فيجوال بسيك دوت نت

557

net.ASPأدوات .4� �

53�iאدא�C�oQ���7،�!¦ن�������N(�9��F� hدوאC ASP.net ل I�53���Q HTML�U�X'�P3 *.aspx ��F�!و�،:�T �א i$Q$,��g!�� �ذ ���9א�D �g$א ،�234F�� �g�3���3��و�� �g(\א� ������53� �N��7��1��U��Qد�� ���دوא�hא

��1.�KPTد��'P �. §���U�oא�دא�zو��3وHא�zא �

�MQא�Eא$�  � ���N ��� �א��3 �و�03א و�Wא ،�GQ' ���D�03�G��N_�א� �k�aqs�KFD���t Event �K7����Q وא���h����� 3��,�i א��!� �. א �

: AutoPostBack خاصية

i�,��3��!� ���lWSא�����bא ����K7Nא����� *N Text �03א��$�lWS�${�،��g�!��Qא���h����3�U���bא

Box�H���I9א�hوאدوא $Q$R� Combo و List Box وא 7'א�����j'אCheck Box & Radio Buttons �gD وא

Box�، �F�7 ��. false �אZ!9א�S��k���sوא �� �

الخصائص األساسية ألدوات الويب .4.1

��T� �JO �� وא ��k�$<�tא�j�V*�وא $وאل C�0�B System.Web.UI.Controlدوא�hא '�53�GQא�� �: א �� �

� �א��C���bو�א $א �ob' �א �Controls� �0�B�$��� iא�دא�lWk�z�Nא���hא�دوא� �

HasControls()� �F�.�$��م�$Dو�C����71'%'د�N3�� iא�دא�lWS�KIدא�hدوאCو%'د�� �ID� ��iאدא�KP �$��- ��P��5P>�9אlH−א���9א\' �

Page� �iא9دא�lWS�'���t ��n�Dא ��ROVאq�}د�'��� �Parent iא�دא iא�دא�lWk��Ns�Lא� �Visible iא9دא�lWS�z�O�Iאو�א�H'g&� �

�JO �א ��7$م �F� System.Web.UI.WebControls.WebControl �*j�Vא�� ���� �gN3� �7�T\א� hدوא 

�: ��\)��gوא ��ض�،��gN3 א\����7 �� �

Page 558: خطوة بخطوة مع فيجوال بسيك دوت نت

558

��bא��� �ob' �א �BackColor� ���Oن�א��' � �

BorderColor� 'ن�אL$ود�� �BorderStyle� �����KQאL$ود� �

BorderWidth� ��Dض�אL$ود� �Enabled iא�دא�K��Oم��$Dو�C�K��O�� �CssClass אل class א��ص���ل styles iא�دא�lWk� �

Font aא��h�3'��3 iא9دא�lWk�:! Iوא���9و��`L�53א

ForeColor ����P 'ن��aIא

Height 1'ل �א �Width ض�� �א �

TabIndex אم$+�����K7N� ��53��g�.'3 Tabא �ToolTip و%'د�� ���U Tips iدא � �

� � : استعراض اسماء جميع األدوات في الفورم: مثال

�$א � Controlsא����b א Collection 5D�2��N �אل����+$אم� �!�sא HasControls()��hدوאCو%'د���!��\

�NP>�،�:3$D�53 � �� �������א P'د�א � � �

#C كودstring Information=""; if(myPanel.HasControls()) { foreach (Control c in PanelName.Controls) { if (!object.ReferenceEquals(c.GetType(),typeof(System.Web.UI.LiteralControl))) { Information+= string.Format("Control Name: {0} <br/>", c.ToString()); Information+= string.Format("ID: {0} <br/>", c.ID); Information+= string.Format("Control Visible: {0} <br/>", c.Visible); Information+= string.Format("ViewState: {0} <br/>", c.EnableViewState); Information+= "<br/><hr/><br/>"; Response.Wite(Information); } } }

Page 559: خطوة بخطوة مع فيجوال بسيك دوت نت

559

� � VB كود

Dim Information As String = "" If myPanel.HasControls() Then For Each c As Control In PanelName.Controls If Not Object.ReferenceEquals(c.[GetType](), GetType(System.Web.UI.LiteralControl)) Then Information += String.Format("Control Name: {0} <br/>", c.ToString()) Information += String.Format("ID: {0} <br/>", c.ID) Information += String.Format("Control Visible: {0} <br/>", c.Visible) Information += String.Format("ViewState: {0} <br/>", c.EnableViewState) Information += "<br/><hr/><br/>" Response.Wite(Information) End If Next End If

� � : أدوات وقت التصميم انشاء: مثال

� � #C كود

TextBox t1 = new TextBox(); t1.ID = string.Format("dynamict1"); myPanel.Controls.Add(t1);

� � VB كود

Dim t1 As New TextBox() t1.ID = String.Format("dynamict1") myPanel.Controls.Add(t1)

� � : ASP.net أقسام األدوات في

� �U�iא\'%'د�hא�دوא���7N� ASP.net ����jHאع�'�C�i$� :� �

Simple controls:

0����t �HTML h����3�K^3 و ASP.net �b�ND�53��gNP א�دوא�hא Label وא �N'אن TextBox א N* א����

�. وButtons :! I وCزHא�Hא��3 �

Page 560: خطوة بخطوة مع فيجوال بسيك دوت نت

560

Rich controls:

D'F�hدوאC�53�� ASP.net �Qد�� �אدא�iא ��Q'7 א �g��^3�53א� ،�*j�VIو� ���T�� �א�^� �gNP وאدאCalendar �i وi�`T � وMenu :! I وא 7'א�D TreeView �jض�א �

Data controls:

�g��^3א��g,�53א�،�h����� � ��S GridViewאدوא�n�D�$F����hא ���i$D�7��aא �� �

Validation controls: 7R� ������Qאدوא�hא�،�K�F� !��و ND��SW�ON����Q�5P$�א��hאدوא��S�،�� h�Q'�)����1� JavaScript ��g�!

�7R� ��h���FD�����W�ONא .� �� �

Login Controls: ��3�P�\א�h�53א9دوא��D'F� :! Iل�و'I$ ��`��Kא .� �Web part controls:

�PR�� ��9���א ��b�O\��+$م�3'.�����VV��hאدوא��D'F�*j�VIن�و' �U� �ROV �. א%�א�zא �

0�1 ���¤�NS HTML Controls �N�$��t �. �7�����gND وא �

����n�D�f��� ��i�Fא�و��D��3$א�אل ��RNول��5Fsא $Hوس�א �7د��3א��N��D��F���t �lWSא�دوא�hא����bא

GridView�K%pN��t ���n.���אل وא��gND��Q$Lא ASP.net + h����� . .'אD$�א

� �

5. MasterPages

l�q����Q�9�0.'\א������53��אz�%�53א\'א.�0אن����D�U�ª$د�� ����� �z�`و��$�Q�����،�h�ROV �K��UאK��Uא�H�P3و�$�Q�:NP �. א h�ROV �53א ��ROVو��g�3�KD�O�Qو �

��+��Kאن�א\'.��0:�،�h�ROV �@�3'%'دא��K��Uא�zא�א��WS�0.א' ����O��KF@�א����ROb�zو.�U 100�Fא�1M��!� ،� :Vj�VI� $��א �q�� U� ���H� ��� ،� i�3� K�� U � �אل U� KQ$��� 100��3��� �ROb� .

�אل C$�3� �g&� �NS�53 include U ASP KFD�� ����Qن����W �U��gN�����ROVא�%�Include �53�z وא ��Nאل ���ROb ASP.net،�و03�h�g& Master Pages�Ob��3��ROb�53�K�{�t �KPא h�ROVوא�����jH��R � �

�!�s����.�،��Q'��C$� � Master Page وאWS�X�`N� New Item ZIא�א\�� �KPTא�� :

Page 561: خطوة بخطوة مع فيجوال بسيك دوت نت

561

� �

�ROb�U�:(� �א P'د�S'�و%'د�א ���VNא� ��$�א���k�¤z�T،�אول�3 �� �� �: $Q$�א �� �

كود<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server"> </asp:ContentPlaceHolder>

� �KFD������t ��Kو��$��0s'���.�،��k �lWSא�'אد¤ �5QWS�K^> Master Pageא '��Yא ��ROVא.��O��+\א

�����!��71N\א�lWS��3��71،�אN\א�g�!�����j� �. �Dض�א ��ROVא �

9���' �c�Qא��K(����g!'ق�و���א �U�،�a7!��ROVא\^�ل� �@�WSא�!�a7،�א�Cن�������א P'د�!'ق�و���א

�g(������j� ����K�`Nא ��ROVא�� �אل� א �F�!��ROV �!�a7و��aאqb�0��3�U9�n�D�'���A�I9א�h����3�،��3�h����� ^3��� �� �iH'Vא�� :

Page 562: خطوة بخطوة مع فيجوال بسيك دوت نت

562

KPT � א P'د�א��ص���lWgא P����ROV'ن����� �: א �

كود<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Untitled Page</title> <asp:ContentPlaceHolder id="head" runat="server"> </asp:ContentPlaceHolder> </head> <body> <form id="form1" runat="server"> <div> <center> <table border="1" width=80%> <tr> <td>hiiii, i am here</td> <td><img src="http://vb4arab.com/vb/attachments/logo.jpg" /></td> <td>any thing</td> </tr> <tr> <td>hii again</td> <td> <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server"> </asp:ContentPlaceHolder> </td> <td><input type="button" /></td> </tr> <tr> <td colspan=2>large TD :)</td> <td>bye</td> </tr> </table> </center> </div> </form> </body> </html>

Page 563: خطوة بخطوة مع فيجوال بسيك دوت نت

563

�53א ���ROb�z�T�����.���FV و �@��53א P'د�!�a7،���$�אDesigner z�g��9 و�����<I�53��gF�FV��5P ل�אل

,�,�Uو�،�i$Q$%G���� Master Page KPT ���: ��S$Q$R����. � �� : א

،�A�Iא��,�,�U��S$Q$���N3�G�1����7��O��n�D��k'V@�א 7���KPT'م� 9�U�G�����ROb�وא�ن��03א

���،��F�7 '��O���Sz�1D@�א�n U�� �� : �KQ$����NP>��>$.��ROb����� Pageא�����bא

�: و�3א�i�Dو%'د�WSא�א '����$Q$א � كود

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> </asp:Content>

� N��9�5P@�אن��9��'��P��n�DאHא�K^3�hאل head وو�� html .�� �

� �

Sitemap التعامل مع .6

9�0�1��K�PT���7 وא I�53 SiteMap �����t ل�����5j���03���3אل����،��g� �����3�h�Q'�)�oQ'.���و����h�ROV �$z .'א��jو�Dض�,`��N �،���.'3�!�s���9אو� sitemap � �� �KPTא�� :

Page 564: خطوة بخطوة مع فيجوال بسيك دوت نت

564

� �

��sאZ!א�� �� �: ��`$�א P'د�א �

كود<?xml version="1.0" encoding="utf-8" ?> <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > <siteMapNode url="" title="" description=""> <siteMapNode url="" title="" description="" /> <siteMapNode url="" title="" description="" /> </siteMapNode> </siteMap>

����lWS�oQאل��N�Fg3א�ن� Nodes ضZON �،Y�ROb��g��و��Qא$� �: �����ROb� ^3� Y�Oא �

كود<?xml version="1.0" encoding="utf-8" ?> <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > <siteMapNode url="Default1.aspx" title="�Qא$� <""=��ROb" descriptionא

<siteMapNode url="Default2.aspx" title="و'S�� '%'�א��ROb !" description="" />

<siteMapNode url="Default3.aspx" title="A$�N\א�'%' ��ROb" description="" />

</siteMapNode> </siteMap>

Page 565: خطوة بخطوة مع فيجوال بسيك دوت نت

565

��N� Menuو�7N'م����b� �!�sא� MasterPage א�ن���RNول�א�O��9د�lWS�53�iא\��'����K7�NN��،�h�3אل

�P'ن�WSא�אل DataSource و�$Q$�אل��k sitemap:�

�������N3�G�1�Q$$��'ع�אل�� Site map ،�א�U DataSource ZIא��i'1א

KPT � א�ن�،�%�3�K�qT��X'.���وא W���P'ن����� : א

� �

SiteMapPath:

'F¡א�@O��0����A�Iא�iدאC$Q$���g�Fg3�،��D ^3�� �� �KPTא���� : א\�Pن�

Page 566: خطوة بخطوة مع فيجوال بسيك دوت نت

566

����� ،�و����U��g�s'���. masterpage K3���03�KFאل��iH'V�����ROb

� �

أدوات التحقق .7 �S \�53��7אR� �n�Dא�دوא�h ،�و��'��KF�Q�h I$ Client Sideא�����g%��gא ��53��D'F�K�Fאدوא�hא

�� �� �: א � −�CompareValidator� :7\��H� ��F���$��]��iد�Dא�� ���U� ^3�$�O�� ،�A�IC�h I$}��g%�U�h I$\א

a�H�،�H�7 א\�وR� 1����WSא�א� �U���iא�دא�lWS � �−�RangeValidator�:��� I$\�53�$אن�א�]h l$Q$����Q�Y�3�1��5ق�Fs�07� � �−�RequiredFieldValidator�:+$م���ن�א\C�53�$�]�� hل�������Iم���د�. .� �−�RegularExpressionValidator�:��7R� ���NP> n�D�z�N� Regular Expression��¤$�O�Q$$��'ع��53א

$Q��� �Cو 0.'3� �Rb� 53� �7R� �א � ���U� ^3 � ،� o��S� �.H� �אو �אلא ZPو�� 5D� $Q�\א� �!��\ Regular

Expressionsא�WS���%�3א��NP> سH$ ��:−�����D−� א �� �

رابط

http://www.arabteam2000-forum.com/index.php?showtopic=77787

Ciد�O��9א��NP>��MQ��9+�אج�א�Y�.'\�5אQWS�53� RegularExpression :��G��� :� �� �

رابط

http://regexlib.com/DisplayPatterns.aspx http://www.regular-expressions.info/

−��CustomValidator�:� ����b��7א��R� ����z�Nא%�אzא�hא����� .� �−�ValidationSummary� �א H'Oم�: �WSא U� �e� t �א �7R� �א h���FD� �%'3� . ���ض

�� �� �: ��'��lWSא¡�n�D��D'Fא�j�V*�א �

ControlToValidate�:��gN3��7R� �Cدא�iא9د�Iل�א\�X'�1א �

Page 567: خطوة بخطوة مع فيجوال بسيك دوت نت

567

Display�:�]1א��Eو$��� ���Uض��� �. א �ErrorMessage�:�]1א��� ��H .� �

ForeColor�:ن�' ��א�1[ ��H .� �� �

K�`�م��H'!���FV7'م���N��،��D'F¡א�lWS����`� �������h���،��1��'��n�Dא���9،�وH.��א\�و�Hو�[��$� א�ن�$Q4 �. א9 ZPو���وא ���F�� �Fא\�و�H،�وא �

- P>�9���9�א� �Iن�'PQ�5אن� : RequiredFieldValidator � �- Y7�1N3א�'�'PQ�$��9אن���S$��]و��Hא\�و��F��: CompareValidator � �- �R�Rbن�'PQ�$��9אن��K�>9א : RegularExpressionValidator � �- �Yن��'PQن�C�$��9��F� � RangeValidator : �50و�10א ��... ���2j����gא �B��7R و�Uא N���Q�gN��ض - �

K7Lא�G��´�iאدא�K��0sم�،�وH'O � .�������FVא�� �P'ن�א �KPTא��gא��ص�� :� �

� ��: وא P'د �

� � كود

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default4.aspx.cs" Inherits="Default4" %>

Page 568: خطوة بخطوة مع فيجوال بسيك دوت نت

568

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> Name:<br /> &nbsp;<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1" ErrorMessage="you must eneter Name"></asp:RequiredFieldValidator> <br /> <br /> Age:<br /> <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> <asp:RangeValidator ID="RangeValidator1" runat="server" ControlToValidate="TextBox2" ErrorMessage="Age must be between 10 and 50" MaximumValue="50" MinimumValue="10"></asp:RangeValidator> <br /> <br /> Password:<br /> <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox> <br /> <br /> Retype Password:<br /> <asp:TextBox ID="TextBox4" runat="server"></asp:TextBox> <asp:CompareValidator ID="CompareValidator1" runat="server" ControlToCompare="TextBox3" ControlToValidate="TextBox4" ErrorMessage="The passwords must be the same"></asp:CompareValidator> <br /> <br /> E-mail:<br /> &nbsp;<asp:TextBox ID="TextBox5" runat="server"></asp:TextBox> <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="TextBox5" ErrorMessage="invalid email address" ValidationExpression="^((?&gt;[a-zA-Z\d!#$%&amp;'*+\-/=?^_`{|}~]+\x20*|&quot;((?=[\x01-\x7f])[^&quot;\\]|\\[\x01-\x7f])*&quot;\x20*)*(?&lt;angle&gt;&lt;))?((?!\.)(?&gt;\.?[a-zA-Z\d!#$%&amp;'*+\-/=?^_`{|}~]+)+|&quot;((?=[\x01-\x7f])[^&quot;\\]|\\[\x01-\x7f])*&quot;)@(((?!-)[a-zA-Z\d\-]+(?&lt;!-)\.)+[a-zA-Z]{2,}|\[(((?(?&lt;!\[)\.)(25[0-5]|2[0-4]\d|[01]?\d?\d)){4}|[a-zA-Z\d\-]*[a-zA-Z\d]:((?=[\x01-\x7f])[^\\\[\]]|\\[\x01-

Page 569: خطوة بخطوة مع فيجوال بسيك دوت نت

569

\x7f])+)\])(?(angle)&gt;)$"></asp:RegularExpressionValidator> <br /> <br /> <asp:Button ID="Button1" runat="server" Text="Go On" /> <br /> <br /> Summery:r /> <asp:ValidationSummary ID="ValidationSummary1" runat="server" /> </div> </form> </body></html>

�q����F.����� Error Message אل�$Q$R����F.و�،��gN3�KP ControlToValidate��g�!�i$� �KPوא .� � '�_��H�$.�5Pא%�������א $Hوس�א ���S��7'א زم� �����FאRegularExpression >9 ~א�K� :� �� �

كود^((?>[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+\x20*|"((?=[\x01-\x7f])[^"\\]|\\[\x01-\x7f])*"\x20*)*(?<angle><))?((?!\.)(?>\.?[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+)+|"((?=[\x01-\x7f])[^"\\]|\\[\x01-\x7f])*")@(((?!-)[a-zA-Z\d\-]+(?<!-)\.)+[a-zA-Z]{2,}|\[(((?(?<!\[)\.)(25[0-5]|2[0-4]\d|[01]?\d?\d)){4}|[a-zA-Z\d\-]*[a-zA-Z\d]:((?=[\x01-\x7f])[^\\\[\]]|\\[\x01-\x7f])+)\])(?(angle)>)$

� ���b�I�¤�Ng!�،���H�7F� ����N Range ،�و�Uאل�ControlToValidate אControlToCompare ��b����!�s و��

*j�VI Minimum Value و Maximum Value.�� �

$S�,و�،��Iא��zאH1[�وI�z�1I9א�X�P�Hא�X�%وא�ن� �`��N �: א �

Page 570: خطوة بخطوة مع فيجوال بسيك دوت نت

570

� �

: نقاط سريعة -�5D�$Q�\3��!��א��NP> Web Parts 53 �NS :� �� �

ابطر

http://msdn.microsoft.com/en-us/library/e0s9t4ck.aspx

-��F� �F�3�V��Y�R� �Y7Q���¤�NS� ،� ���nא �R)���$א���j%$א��g7'م����t ����3�Vא�!�A�� ��Q$7 ،�א�KLא

�: ،�و3��NP>�lWS��!��א\�CSS �NS��gND�$Q �+$אم� �n�D�$F��QKא� �� �

رابط

http://www.w3.org/Style/CSS/learning

� �

Page 571: خطوة بخطوة مع فيجوال بسيك دوت نت

571

53�zא��$א�$Q$א��KLא ASP.net �����f��Q��3א��+$אم��'S Themes �NS�53��g�!�z$� �: ،�<��NPא �� �

رابط

http://msdn.microsoft.com/en-us/library/ykzx33wh.aspx

� �

8. tate ManagementS

�Q'1��U���H�{ل� I�53و���� Desktop Application א�WS�K(��!� �3�q�\��OQ�����.א���و�¤H$��(O�)�q�\ج�אل אH�Iو�א��وج�C�23��4 ���nא��z�gא�:�F�7� Scope نC�9��،�q�\א�אWg�0 א��ص��s' WSא�א

U� �3�e�o��� ASP.net ن��� Wא� ،�KQ$�ول��C�03�hאq�\א� ��.�0�M�������C����Dن��7'م� �53א زمf���N���3�'Sو�،��gD�%Zא���NP>���r���.א���وq�3�5Q�+�� سH$ . WS�U�:���N7������n�Dא�א

: <�5Q�§��NPא ����7'א�$�������53�iق�א�����

−�View state.�

−�Control state.�

−�Application-Level Variable.�

−�Cache.�

−�Session.�

−�Cookies.�� �� �� �

8.1. Control state �S �q��'S����D��3�K��،�h����� ���&�O�� �Kg��7א��Q�1 ���nو '���EnableViewState �א �F�7א�iدאC��

5 ��א ���7א\'%'دC�U�i�C�53دوא����Lא�lWS�U�،�KP���ROV� ���nא� ق� ��g�F�7���(O�)�K(و�����]���ROV . א

'�!���Rאل HTML 5D�2��N ���ROV��+$م א��OV�\א View State אل�ªO�d������ �� ��`$�א���zא

ViewState�:�F�7� .� �

Page 572: خطوة بخطوة مع فيجوال بسيك دوت نت

572

كود<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTIxNDIyOTM0Mg9kFgICAw9kFgICAQ8PFgIeBFRleHQFBWFobWVkZGRkCq8FGqyXBP0pBDpvdnycvM5zSQE=" />

� � : خطأ شائع

�Q$ ��Fj�.�h�Q'�)�zK}ج��ن��7'م������3� �����C אل�E$��U Form_Load �،�G5א��QH'1\م�א$+����

� �� �: א�X'��9א �� �

#C كود ListBox1.Items.Add("Ahmed"); ListBox1.Items.Add("Mohammed"); ListBox1.Items.Add("Ali");

� � VB كود

ListBox1.Items.Add("Ahmed") ListBox1.Items.Add("Mohammed") ListBox1.Items.Add("Ali")

�b'VI�،א�$%�����3��7Q�1 ������U hא 'א.�lWS�0א '���ن��zK3א I�53���Q��Fj�7 ل�.��i$Dא !!!� �

'S� ،�KQ$� �وא��+$אم�א��EnableViewState ��b א�F�D9د���b�I�n�D א�KLא ، IsPostBack �53�$�]��

�N�C � �� �KPTא���a7!א�و���i�\א�U��S }7'م��� �� �

#C كودif (!IsPostBack) { ListBox1.Items.Add("Ahmed"); ListBox1.Items.Add("Mohammed"); ListBox1.Items.Add("Ali"); }�

� � VB كود

If Not IsPostBack Then ListBox1.Items.Add("Ahmed") ListBox1.Items.Add("Mohammed") ListBox1.Items.Add("Ali") End If

Page 573: خطوة بخطوة مع فيجوال بسيك دوت نت

573

� ��

8.2. View state

،�h�5א�دوאD� �+�O��n�D�$F����A�IC��7Q�� �5Q@�א\gO'م�و ��5P��$א�� �� ����<3��NP^ �������א P'د�א�7Q�1 �: .�ON���3��F@�א �

� � #C كود

ViewState["CustomViewStateItem"] = "Ahmed";

� � VB كود

ViewState("CustomViewStateItem") = "Ahmed"

� ��: و��9��د�: �

#C كودLabel1.Text = (string)ViewState["CustomViewStateItem"];

� � VB كود

Label1.Text = DirectCast(ViewState("CustomViewStateItem"), String)

� �

8.3. Session

��g���7Q�� �7Q���@ONא�،�و�$%�K3��� �����Pא �� View State א�،�a7!���NP� �: ��03��7א�f �Iא �� �

#C كودSession["mySession"] = "Ahmed";

� � VB كود

Session("mySession") = "Ahmed"

� �iوא��9��د :� �

� �� �

Page 574: خطوة بخطوة مع فيجوال بسيك دوت نت

574

#C كودstring name = (string) Session["mySession"];

� � VB كود

Dim name As String = DirectCast(Session("mySession"), String)

� ��NP> KFD Remove � Session � �� �KPTא�� :� �

� � #C كود

Session.Remove["mySession"];

� � VB كود

Session.Remove("mySession")

� ���b�I�¤�NSن�C��F� Timeout iZ!د�$��t $.���j،�وא!ZאSession ��S���s א���O&�אل وא���:�F�7�20�7�.د� � �

#C كودSession.Timeout = 5;

� � VB كود

Session.Timeout = 5

� �

8.4. Cookies

A�IC��7Q�� U���7 �������Qא9���lWg��&�Oא�،�K�F� ���7و �g%�$ND�5Pز�א���&�O��(����V��h�O�3 �53و���Kjא9��3��qא�i�Dאن�PQ'ن���OV�3א �Q�K�F��U�(K^}��Fא���Gא9���ن�NQ�5P �lWSא �����F،�و��Sא ��7Q�1א��^�� و

U� K�`�� �وא �א $I'ل h�3'��}� &�O���א9 U� i�g, �O��+\א� � א\'א.0 ،��JO �א 53� �7�T3� �Sو

System.Web.HttpCookie� .� �

X�`N� אن�' �����7N'م����`��Kא�H���Iא\��+$م��53א��،����'P אC��MI9و�א�"�� �א �'ن−א�ن��n�D�9�^3א� ^3−��'�� �و%'د � ���U� 0.'F� � K�qT�� K�� �و03 �א��+$אم، ��Q� �'ن� �� z'`� �א ��Q� �و�9 ،� KMO\א� א �'ن

^3��Obא��'Sو��sאZ!9א .� �

: �����א ��ROVאو���9 �'ن�אZ!9א��sא�7N� �Ob'م

Page 575: خطوة بخطوة مع فيجوال بسيك دوت نت

575

�: א��ص���g א P'د � كود

<asp:Panel ID="Panel1" runat="server" Height="134px" Width="446px" BackColor="Yellow"> X'�1\ن�א'� </ �H���I����. :<brא

<br /> <asp:RadioButton ID="RadioButton1" runat="server" Text="�MIC" GroupName="colors" /> <br /> <asp:RadioButton ID="RadioButton2" runat="server" oncheckedchanged="RadioButton2_CheckedChanged" Text="�"C" GroupName="colors"/> <br /> <br /> <asp:Button ID="Button1" runat="server" Text="���1�" onclick="Button1_Click1"

/> </asp:Panel>

� ��$�Eא n�D�aqM وא�ن�،�U�� �� �KPTא��� �� ���H��+\ن�א'� � �7N'م�����µ����'��z�Tن�!�:�א Hز� )����1�� (�،

z�g�� ���H������'P �: و�WS��1�Nא�א �� �

Page 576: خطوة بخطوة مع فيجوال بسيك دوت نت

576

#C كودstring color; if (RadioButton1.Checked) { color = "Green"; Panel1.BackColor = System.Drawing.Color.Green; } else if (RadioButton2.Checked) { color = "Red"; Panel1.BackColor = System.Drawing.Color.Red; } else color = ""; HttpCookie Cookie = new HttpCookie("myColor", color); Cookie.Expires = DateTime.Parse("01/01/2009"); Response.Cookies.Add(Cookie);

� � VB كود

Dim color As String If RadioButton1.Checked Then color = "Green" Panel1.BackColor = System.Drawing.Color.Green ElseIf RadioButton2.Checked Then color = "Red" Panel1.BackColor = System.Drawing.Color.Red Else color = "" End If Dim Cookie As New HttpCookie("myColor", color) Cookie.Expires = DateTime.Parse("01/01/2009") Response.Cookies.Add(Cookie)

�$�Eאل�Uوא�ن� Form_Load ،�K�qT�� ��و%'د ���Uو�،����'P !�����7N� myColor ��!��3'م���7א�izא:�F�. :� � #C كود

if (Request.Cookies["myColor"]!=null) { string color = Request.Cookies["myColor"].Value; if (color=="Green") Panel1.BackColor = System.Drawing.Color.Green; else if (color=="Red") Panel1.BackColor = System.Drawing.Color.Red; }

Page 577: خطوة بخطوة مع فيجوال بسيك دوت نت

577

� � VB كود

If Request.Cookies("myColor") IsNot Nothing Then Dim color As String = Request.Cookies("myColor").Value If color = "Green" Then Panel1.BackColor = System.Drawing.Color.Green ElseIf color = "Red" Then Panel1.BackColor = System.Drawing.Color.Red End If End If

� �

8.5. Application Q��A�IC��7 53��7�T3 HttpApplicationState $� ��K�Fوא�h����� ،�����Q�K ،�و �5Q�§���Q�9��k I�53�5Pא

Hوא� �D�'S$د�א �k3^�ل��a�א�� ،�z F� ��5P>�h������5Q�§ �$NDאن���0�F��KVא ���qאن�PQ'ن���p3אNQ�W وאa7!�$��. �0�Bא ��z Fو �@��K�FDوא �

lWS�'�� و$ ��א �n�D��JOא�� �: אل�وא�j�V*�א �

� �� �א��C���bو�א $א �ob' �א �

Add()� ��!�sא �Fj�7� �$Q$%������$Q$%��VND� �AllKeys� �iא\'%'د��b�N� �א����אض��0�Bא �Count� �iא\'%'د��b�N� �D��!��3$د�א �

Lock(), Unlock() م$Dאو��v�F� �א ��KQ$����v�Fא¡�D'F א �RemoveAt()

Remove() RemoveAll()

�C�،��N��3��17��Uو������C�،�Y�3و���fWא ��VND�fWL KP��+$م� �

�!�sא��NP> Application � �� �KPTא���$Q$% :� �

� � #C كود

Application["Visitors"] = 1;

� � VB كود

Application("Visitors") = 1

Page 578: خطوة بخطوة مع فيجوال بسيك دوت نت

578

�5P>אن�3^ و'ND�0��3�U��gא����د� :� �

� � #C كود

labelVistor.Text=(string)Application["Visitors"];

� � VB كود

labelVistor.Text = DirectCast(Application("Visitors"), String)

� �KQ$�� �: .�3��F^ و �

� � #C كود

Application["Visitor"]= ((int)Application["Visitor"])+1;

� � VB كود

Application("Visitor") = CInt(Application("Visitor")) + 1

� � � �

حظةمال ... قد ~ تكون نص فقط ، بل قد تكون مصفوفة من الفئات مث·Application~تنس ان محتويات ال

� �� �� �� �� �� �

8.6. Cache

�V���A�IC� ��N7� �Sz�T�9� ،� �k�a7!� �N��3� iZ!�$Q$���NP>�5P �و ،� z F� �א i�g%C�0�B�$ND����1� ��

^3�� �� �: ���+$م�א���3א �� �

#C كودContext.Cache["myCache"] = "hii, my first cache";

Page 579: خطوة بخطوة مع فيجوال بسيك دوت نت

579

� � VB كود

Context.Cache("myCache") = "hii, my first cache"

�iد���� �: و �

� � #C كود

string myCache = (string)Context.Cache["myCache"];

� � VB كود

Dim myCache As String = DirectCast(Context.Cache("myCache"), String)

8.7. asax.Global

�U��NQ$ ���j�%��I�5Q�+� אGlobal.asax h א��+$אم�s'3�S� o�3'ع�אq�3�5Q�+� Global �5P>ودوאل��ROb��53א��g� � א 'b'ل���� �KPTא����SH���I����.و�$Q$%��VND��!�s����.�، :

$�� �� �� �: א�lWk���!�sא ��g��$`���،��ROVא!Zא�s��א��'אد�א �

Page 580: خطوة بخطوة مع فيجوال بسيك دوت نت

580

� � #C كود

<%@ Application Language="C#" %> <script runat="server"> void Application_Start(object sender, EventArgs e) { // Code that runs on application startup } void Application_End(object sender, EventArgs e) { // Code that runs on application shutdown } void Application_Error(object sender, EventArgs e) { // Code that runs when an unhandled error occurs } void Session_Start(object sender, EventArgs e) { // Code that runs when a new session is started } void Session_End(object sender, EventArgs e) { // Code that runs when a session ends. // Note: The Session_End event is raised only when the sessionstate mode // is set to InProc in the Web.config file. If session mode is set to StateServer // or SQLServer, the event is not raised. } </script>

� � VB كود

<%@ Application Language="VB" %> <script runat="server"> Private Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs) ' Code that runs on application startup End Sub Private Sub Application_End(ByVal sender As Object, ByVal e As EventArgs) ' Code that runs on application shutdown End Sub Private Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)

Page 581: خطوة بخطوة مع فيجوال بسيك دوت نت

581

' Code that runs when an unhandled error occurs End Sub Private Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs) ' Code that runs when a new session is started End Sub Private Sub Session_End(ByVal sender As Object, ByVal e As EventArgs) ' Code that runs when a session ends. ' Note: The Session_End event is raised only when the sessionstate mode ' is set to InProc in the Web.config file. If session mode is set to StateServer ' or SQLServer, the event is not raised. End Sub </script>

�����jH� $وאل� h�OQ���� n�D� �ROV �א lWS�'�� ،��(�9� �Fאل و�� �א�'אع �!��� 03� K3��� ��� �b�I State

Management�z�1Iא��Eو$�� � �L� �!�sא� ، Application_Error��K3��� iHאدא�U�$�O�53دوאل��� �Sو��NP>و� ،� �א��+$א����3 ��h�ROb �b�Nא\�Tوع 0�B�U� �gN3� iد�O��9א State Management ��O��+\א

�N!����t �. WS�U��g��Dא�א $Hس א �� �

9. net.ASP وقواعد البيانات � �

Q���� ������WI]N�03�hא�ن�%' ��^���53א\��'�h�3א �U�، �tא 'א.�0 �5���ج �D�U��� ASP.net_�.'אD$�א1��U��g�F��� ADO.net �NS��g7دHوسN��t �. ،�وא �

Wא �g�D��������hو� �א i$D�.�53�z��C�iz�7א��a7!7'م�Q�a����0.'3�KF��� �Q7'م��$אN� م�$+��N�� �F��+$م�،

D���j$�3�'���h������i$D�.'Sא�WS�a7!�،�l���2و��N\א���א�n� K.و�9א��^�C�@� �: א P'د� �� �

#C كودSqlConnection cn = new SqlConnection(@"Data Source=AHMED-PC\SQLEXPRESS;Initial Catalog=Items;Integrated Security=True;Pooling=False"); cn.Open(); SqlCommand cmd = new SqlCommand("select * from Items",cn); SqlDataReader dr= cmd.ExecuteReader(); while (dr.Read()) { Response.Write("<b><font color=blue> Item Number: </font></b>" + dr.GetInt64(0).ToString() + "<br/>"); Response.Write("<b><font color=blue> Item Name: </font></b>" +

Page 582: خطوة بخطوة مع فيجوال بسيك دوت نت

582

dr.GetString(1) + "<br/>"); Response.Write("<b><font color=blue>Item Price: </font></b>" + dr.GetInt64(2).ToString() + "<hr/>"); }

� � VB كود

Dim cn As New SqlConnection("Data Source=AHMED-PC\SQLEXPRESS;Initial Catalog=Items;Integrated Security=True;Pooling=False") cn.Open() Dim cmd As New SqlCommand("select * from Items", cn) Dim dr As SqlDataReader = cmd.ExecuteReader() While dr.Read() Response.Write("<b><font color=blue> Item Number: </font></b>" + dr.GetInt64(0).ToString() + "<br/>") Response.Write("<b><font color=blue> Item Name: </font></b>" + dr.GetString(1) + "<br/>") Response.Write("<b><font color=blue>Item Price: </font></b>" + dr.GetInt64(2).ToString() + "<hr/>") End While

2��N : وא

�K7 א�ن�h����� �א i$D�7 �o�MN�� �Fم�����א�$אول��$+��N�� ،� �א ��ض�.�� ���FD�KF`N� �،� iH'V Hא��aא$���U� H'V �وא ��o�MN� iamges 3�@O��U�gs��N��t���א 23��4 �א H�� � 2�N3� KP ���P'ن�−� �א P'د

� �� �KPTא�� :� �� �

Page 583: خطوة بخطوة مع فيجوال بسيك دوت نت

583

#C كودSqlConnection cn = new SqlConnection(@"Data Source=AHMED-PC\SQLEXPRESS;Initial Catalog=Items;Integrated Security=True;Pooling=False"); cn.Open(); SqlCommand cmd = new SqlCommand("select * from Items",cn); SqlDataReader dr= cmd.ExecuteReader(); Response.Write("<center><table border=1><tr valign=center align=center bgcolor=#AAAAAA><td><b>Item No.</b></td><td><b>Item Name</b></td><td><b>Item Price</b></td><td><b>Sample</b></td></tr>"); while (dr.Read()) { Response.Write("<tr><td><b>" + dr.GetInt64(0).ToString() + "</b></td>"); Response.Write("<td>" + dr.GetString(1) + "</td>"); Response.Write("<td>" + dr.GetInt64(2).ToString() + "</td>"); Response.Write(@"<td><img src='images/" + dr.GetString(3) + "'></td></tr>"); } Response.Write("</table></center>");

� � VB كود

Dim cn As New SqlConnection("Data Source=AHMED-PC\SQLEXPRESS;Initial Catalog=Items;Integrated Security=True;Pooling=False") cn.Open() Dim cmd As New SqlCommand("select * from Items", cn) Dim dr As SqlDataReader = cmd.ExecuteReader() Response.Write("<center><table border=1><tr valign=center align=center bgcolor=#AAAAAA><td><b>Item No.</b></td><td><b>Item Name</b></td><td><b>Item Price</b></td><td><b>Sample</b></td></tr>") While dr.Read() Response.Write("<tr><td><b>" + dr.GetInt64(0).ToString() + "</b></td>") Response.Write("<td>" + dr.GetString(1) + "</td>") Response.Write("<td>" + dr.GetInt64(2).ToString() + "</td>") Response.Write("<td><img src='images/" + dr.GetString(3) + "'></td></tr>") End While Response.Write("</table></center>")

�KPT ��3^ وא P���2��N'ن����� : א

Page 584: خطوة بخطوة مع فيجوال بسيك دوت نت

584

� �

مالحظة

_�D�U��g7�1���N��t א ���h �gא ��gR����t ،�א�ن��O���S�lWS ASP CLassic ����n�D�f���N@�א ��7Q�1א ��Nא�~.net.�

� �� �

9.1. DataGrid

lWS�4��� �i�g,�h����� �... ،���X�`Nא�ن�א ���ASP.net �g�3�K3 03א9دא�iא�^��אدوא�hא �

������. DataGrid 53و�،��R� ���.��� SqlDataSource�GR ،�.���������0��3*�وز�53��3C�Hא%����FD�Kא

� �� �KPTא����N : و�7'م������g1´$و

Page 585: خطوة بخطوة مع فيجوال بسيك دوت نت

585

G�1�� אل�ªO���7�9��N3 Connection String aqsא�، Next .�� �

G�1����^ �^ ������h�Q'�)��!���H���I����.�،�hא�U K7Lא��i'1א : ��N3��H$V3�$Q$א

0MN� ط�אن��,��MQאאq�3�o�MNא��W �،�a7!�Y�3��������0j�M� �F��+$م�א�U��Lא&�H�gא �:D'و�$د��:�]� Control � �� �KPTא���*N : و��0Mא����0��3א

Page 586: خطوة بخطوة مع فيجوال بسيك دوت نت

586

a7! אل����{��NP> Query z�gא��aqsא�، .� �

�P'ن�אل DataGrid ، H���I����. DataSource א�ن��7N'م��� �'د����iאل��k SqlDataSource ��NF.�W א

K��.�WN3�lz�T��� � �� �KPTא�� :

،�a7!�23��4،�.�� و : ,�Wk��g��T3��Jא ،�א P���2��N'ن �H���I�� EnterאH.�م������Oوא �n�D�aqMزH.����`����א

Page 587: خطوة بخطوة مع فيجوال بسيك دوت نت

587

� �

: خصائص اضافية

��!�s9א�*j�V��5���א�Dא�ن��E$R�N� (\א��S��kאو�،�iא�دא�lWg���7!�\א�g � �

� �Iص�، �KQ$����NP> CSSא\)I�53��g ل�� : و<��NPא�Y��H���I9א\'%'د��� �KPTא

�17N �Cدאi א n�D� �O��+\א�h���F� ��� v�F� �א �S� ،� ����^ � GridView א v�F� �<��NPא �،� �'%'د، h�ROV א�MQא�G��Z : وא�H���I9وא

Page 588: خطوة بخطوة مع فيجوال بسيك دوت نت

588

2��N � א�� ���� �KPTאJ�,ن�'P�� :

��NP>�،�H���I.�א�izא �`�Kא¡$د�����+$אم א�ن�E$��0sو�X�`N� :� �� �

#C كودstring something=GridView1.SelectedRow.Cells[0].ToString();

� � VB كود

Dim something As String something=GridView1.SelectedRow.Cells(0).ToString()

����5Fs�$`Nא�j�V*�א�'א א�ن�� : ص�א

� �

�F�� ^3�� �� �KPTא���،��!�s9وא�KQ$�� �lWS��Nא��h���F���*j�Vא�fWLوא :

Page 589: خطوة بخطوة مع فيجوال بسيك دوت نت

589

¤�NS K^3�A�Iא�h��אدوאMQא FormView و details view :! Iض�و��� ��MQم�א$+����t . وא

KPT ���$Q����3�G����gjوא���i$FDא��*j�VI�U�KQ$�� �lWS�KPא9دوא�5P>�،�hא ^3�� �� : א

���� 03�h����� �����D�U���Q_�.'אD$�א'%�lWS ASP.net وسH$ א������9 K ،���.��א ��U��S${�K�b�Oא

ADO.net ...�� �� �

Page 590: خطوة بخطوة مع فيجوال بسيك دوت نت

590

10. WAP

�وא WS�UWireless Application�Protocol�f����tא�א $Hس�،��'�n�D��Q'��f�����fא ����N7א\��و!�������H�V�Iא������אWAPل� I�53���N7� �،���1�N���Fق��Uא���zא ^����WS�53א�א $Hس���������Oא ����lWS�03�K3א

.net�.�� �

؟WAPما هي .10.1� �

:Mobile Applicationتطبيقات الموبايل

���،�lH'g&��.و�:N3�f$kن�א����F�^3���O��kא�h�\�P\א�z�%9��1א��ل���Vو�����א��KQ��'\א�$�Q�_��3א��H'1����K��h�\�P\א�K%C�53م�$+��Q�KQ��'\א�$�Q�_و� ،� �MQC� ��F���و�� ��g�!و��� ��3$Iو������KQ��'\א���V� א�ن�� �S�و� �Q$�F���\وא� �א\��3$7 h�7��1� �א �وא��+$אم ��Z�9א� n�D� �א $I'ل U� �Q��+$م ��bC�.� �

1���h�7א��n�Dل�$� �i$Q$%�h�R�1V3�h�g&�l��Gو�� �א \'���KQو��א�:�و�)��א ��K�qTא��ص��:�،�وWkא���1V3�h�R�1V\א�lWS�5Fs�53و��ن�WAP���1V\� ��3�WEB�aدא!���Q�W ���hא ���V+Tوא��Lא�n�D�

�:��3$Iو���Zא���_����.� �

؟ WAPما هو ال

��F�P!��7�����NOא����F�WAP��F�P �H�V�Iא��S�Wireless Application Protocolوא�'S��F�53א����9،�و���s�7 ��C�H���3��S�Standerdو�WAP!¦ن�WSא��c�Qאن�N ��ط��i�g%C�a�H����f$gQ��\�D�Mobilesאk'א��oא�H����

� �א\�VNم �א �7ن h�N����� 53� ���^ �א oVN �א U� l�Q'1�� �و� ،� ��Z�����.� ������t ����,���h���,�H�P!C�hא]F'ل�א �A4Pوא�$����ON3�KF����gN3�Kد�iو.$�%�WS�zא�א 4و�'�'ل�א\'

�5Q�I�5א�D�o����l�{א�Uو�.� �

؟ WAPكيف تعمل

� ��F��WAP�5D�WEB��`��qV��iHو�M �Q����م��� �3� �وWSא ،�� 'F[א�oא�'kא�h����P3א�Hא���U�KF��� �g�]��g%������H�73�� 'F[א�i�g%�����bא���h����\א�hאH$.�o�sو��D�� ������hوא ����o�s�03�K3א ��iא ���V+Tא

��MQC��k I�53�h����� �`��א �T,��א �D���Q�tض�א��qbو�.� �

Page 591: خطوة بخطوة مع فيجوال بسيك دوت نت

591

�!��U�i$Qא}�WAP�lوI�53 ل�����N7אل�����gN3�K�������t ���_���h���,�h��,�Kא]F'ل�א �A4Pوא�� 'F[א��g��g%C�n�D���Z�9א�h�3$Iل��I9��د����o����.� �

�����K�URL�:�¦!��ROb�Gل��I�53 ل����Gא �WAPFو��$��V.�Cאل����Uو�،�:! Iو�o�\و�C��3��ROV �Y�3���B�����QHTML����WML�K �i�&�N3ض��D��7Q����Sو�HTML���5و�'�'ل�אل�Fs��g3א��+$א���Q�WAP�

��� �� ��U��gא �i�7Oא�T��f'و�.� �

��D$���R�bC�� 'F[א�oא�'kن�����אC���W ����Q$وא�HTML��MQC��...� �

10.2. WML

�KFD��7Q�1 � �������g��T3�h%$א ��7 '�obאQ����SHTML�Q��3�n�D� �gNP ��HTML�U،�و§���XML�5D�oو��gN3�7ط�N :�D$د��53א

−���' ���K�gא ��ض�����7NQ�Cards���א\��wml<�53�9$��>html<�−�h�.�1�����$N<�א ��j����Tag�'Sא��~���.�1��K��C$��>card<�~���MQC��g�Nو��>card/<�.�� �

���������O����s'Q�9�^3ض���N���Qא$�WML� ^3�� �� �KPTא���� �$��Q−��وذ�PQ�53و�−�:�� �

كود<?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//PHONE.COM//DTD WML 1.1//EN" "http://www.phone.com/dtd/wml11.dtd" > <wml> <card id="main" title="First Card"> <p mode="wrap">This is a sample WML page.</p> </card> </wml>

: قراءة القيم المختلفة وتخزينها وعرضها للمستخدم

� ��� �� �KPTא����k���.د��Nوא��hאq�\א�oQ�����NP>�������KP��:� �

كود<setvar name="First_Name" value="Ahmed"/> <setvar name="Age" value="21"/>

Page 592: خطوة بخطوة مع فيجوال بسيك دوت نت

592

� ^3�� �� �KPTא����gs�D��NP>��7��:�و9 �

كود<p>First Name: $(First_Name)</p>

� �

3���������Qو�0sא���Selectو<�5PאMQ��.�אC�*��0��3��F�.�izو��e��7Q�1 ���ON@�אq�\�53�9$א���א��iא�دא.� �

�F��+$م���gs�Dو�H���Iא�iدאC���.�iz�7א ��:�−��7N3'ل3^�ل�–3^�ل� �

كود<card id="card1" title="Tutorial"> <do type="accept" label="Answer"> <go href="#card2"/> </do> <p> <select name="name"> <option value="HTML">HTML Tutorial</option> <option value="XML">XML Tutorial</option> <option value="WAP">WAP Tutorial</option> </select> </p> </card> <card id="card2" title="Answer"> <p> You selected: $(name) </p> </card> </wml>

10.3. net.ASP+ WAP

�� 1����א W�C�U�l�Ns�Dول�א\�7� ��$��Q−��ذא�.�KQ'R����NFא�PQ7'ل��53وN\א�−�� �� �:��وא W���ن��� �KPTא �

دكو <?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//PHONE.COM//DTD WML 1.1//EN" "http://www.phone.com/dtd/wml11.dtd" > <wml> <card id="main" title="First Card"> <p mode="wrap">This is a sample WML page.</p> </card> </wml>

Page 593: خطوة بخطوة مع فيجوال بسيك دوت نت

593

����:�Q'R����NF.و.net�� �� �:��!�'PQ�f'ن��� �KPTא �

كود<%@ Page Inherits="System.Mobile.UI.MobilePage" Language="C#" %> <%@ Register TagPrefix="mobile" Namespace="System.Mobile.UI" %> <mobile:Form runat="server"> <mobile:Label runat="server"> This is a sample WML page. </mobile:Label> </Mobile:Form>

����Uא �����K3'א���1�H�� ���UVB.net�� �� �KPTא�����V� �a7!��1א�ول�� �א���:� �

كود<%@ Page Inherits="System.Mobile.UI.MobilePage" Language="C#" %>

� ������ROV ��Kא �C���Q�،�K�Fو�9��KQ'א.�53��ROV ����ن�א �g%�53�G�1ز�wml��o��Sوא�ن��G���$NDא���U

����i�,��3�KQ'R� �����Gא\'.�g%�53�0ز�,+C��Vو��'3��'����F)HTML��O'ل�،�Cو����Qא���U��.� �

����1� ��C�3�a^�ل� �WS�Uא�א¡�ل�I�53�.NET�U ل���WAPن�WSא^P �زאل����KFD����P3א �3�5P �و ،��n�D�f��� �و�Uא ،� �3'FD�0.'\א� �و��ذ ���53א���Hא�hא\�s'3��3$7'ع����� �g�����P3وא� i�jא� �א i�g%א�

��b'VI.� �

� �� �� �� �� �� �� �� �� �� �� �� �� �

Page 594: خطوة بخطوة مع فيجوال بسيك دوت نت

594

11. Ajax � �

�'ل�Iس�א�H$ �א �WS�U ASP.net ��N7��h�3$I�53א iد�O��9א� ��O��� ��Qض�������N� ��!א\��و���Zא������ AJAX ل I�53 .net .� �

AJAX اجاكس .11.1

H�V�Iא��S �F�P Asynchronous JavaScript and XML وC�i$Q$%�������q ���� ��g!�0.א' ،�و�Uא

$F���� ،� ������و� ،�A�IC� �7Q�1�� iא\'%'د� �F'אHد� ���Sא��+$אم �3� H$.� i$Q$%� ��N7� �z�{�n�D�@��%א� �Lא�lWS�Uو�،�i$��n�D���.�K������3م�������א.�i$D�����ROV ��3 PQ�5'ن א�z���K�F� �!¦�:��G���$NDא

K3�P ����ROV . �1M3א��H�(��9���Q$א

א�$�53�i$Qא Q4$�א� ZPو��� א�s!�����א N�S Gmail �+'�א Q4$�א� ZPو�� AJAX و �3C��g,C�K^���א��+$אم� ~ Yahoo و Hotmail .� �

�}H�$Q�\א��!��\ ��N7� �$�lWS�5D��Qא�PQو��ROb�iH�Q�0�1ز��� :� �

� � رابط

http://en.wikipedia.org/wiki/Ajax_%28programming%29

� � ؟ net. كيف أبدأ من خالل

����53�¢א�دوא�hא ��t���PQ�3��3�.¤$Dو i$D� Hא$b����!'� U��� و���KgאVL'ل��n�Dא\��Fא�hא\��

AJAX אWg��7م�� ��ل�����0�1א��Qא�n�D��NP �، �����nF�Q��3و�����+$אم�C�،��Qو$Q�lH'b�a��C�U��3א� Atlas

53��+����Sو X��b�I��!'و��PQ�3 AJAX .�� �

Page 595: خطوة بخطوة مع فيجوال بسيك دوت نت

595

� ��PQ�3و�'!� �3�.� K�g�� �א 53� $Q�F� �א�دوאb�� Asp.net Ajax ToolKit �h$אHو 53� �D'F�� �Sو� ،

53��gs�5א����אP>�t � I ل�WSא�א �א�a א\+����Oא �� �

رابط

http://ajax.asp.net/ajaxtoolkit/

�: �א�aو��lWS�K�Fא�دوאI�53�h ل�א ����0�1ز�iH�Qא\'.0 �� �

رابط

http://ajax.asp.net/

53��F+s����P3�0.'\א��!'Q��F� ول�hא�دوא�lWk���F���� �،�<�5Pא 'b'ل�� �Asp.net �4D��g א\'אد�א �3'FD

�: א �א�WS aא �� �

رابط

http://www.asp.net/learn/default.aspx?tabid=63

�NP> א$Q$��'Q$�O �$I�53�z ل�WSא�א �: א �� �

رابط

http://download.microsoft.com/downlo...List-Video.zip

�$א���O���5D��Qא��+$אم و��7'م �WN3�v�Tא�� Atlas .�� �

��O���v�T �A�ICوس�Hد�¤�NSאم و$+�����z$� 3��,�WS��gN3�iא�א Ajax ToolKit 'Q$�O א :� �

� � رابط

75=id&63=tabid...view/videos/learn/net.asp.www://http 76=id&63=tabid...view/videos/learn/net.asp.www://http

�$U�C وא�ن�،Nא�ول���N7��1��KFD� ...� �

Page 596: خطوة بخطوة مع فيجوال بسيك دوت نت

596

،�� �Lא��.' ��0��3*� ���ض�!�:�א�KFD�X�% ����53و�،��ROV ������Fe�0�1���Q$א�iH'b��!�s����.��MQא

� �� �: �Uز�Hא������P���. �3א P'د�א �� �

#C كودTextBox1.Text = DateTime.Now.ToString();

� � VB كود

TextBox1.Text = DateTime.Now.ToString()

� ���Q�K�O ��� ،�E$d��3��(�9�KS ���Q�9���r�z$��א�ن���RNول��1�����O@�א\ ،�K3�P ����ROV �$��Qא

n�D�A'���]� �. א���zא W������א ��$�KQ!�: א �

�!�s����Qא�.���$אW ScriptManager h�5אدوאFs�53 � �� : א%��@��� �KPTא

��¤���03א ���. UpdatePanel U�a7!�iH'V�GR א�ن �g�Iא$�� �א��3 Hوز�*N �و.���'�0��3�0sא א��Hج�،� ،� �� �KPTא����ROV �: ��P'ن��'د�א �

كود<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default6.aspx.cs" Inherits="Default6" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Untitled Page</title> </head> <body>

Page 597: خطوة بخطوة مع فيجوال بسيك دوت نت

597

<form id="form1" runat="server"> <div> <img src="images/food.jpg" /> <asp:UpdatePanel runat="server"><ContentTemplate> <br /> <br /> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <br /> <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="ShowTime" /> </ContentTemplate></asp:UpdatePanel> </div> </form> </body> </html>

� �KS�،�X�%ق�!� �؟؟ وא�ن�H�O 9�)��א� �

's'3�����א�ن���RNول��1 ،�K�B�NsZ!א�' � ��3ذא �Iج�אل ع��H�I��39א� H�0زsو�$Q��� �Nא� update panel

5Pא��WS�،�:^Q$����Q�9���r .� �

��دא�a7! update Panel KIא��GRز�Hא�H�I��3ج�אل�� ��: update panel אل ،�و.��������Pא P'د�א � كود

<Triggers> <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" /> </Triggers>

���V� � �� �: א P'د���3 ��� �KPTא �

كود<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default6.aspx.cs" Inherits="Default6" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <div>

Page 598: خطوة بخطوة مع فيجوال بسيك دوت نت

598

<img src="images/food.jpg" /> <asp:UpdatePanel runat="server"><ContentTemplate> <br /> <br /> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <br /> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" /> </Triggers> </asp:UpdatePanel> <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="ShowTime" /> </div> </form> </body> </html>

� �i�3ق�H�O 9�)��א�KS ؟�A�IC

� � : عودة لقواعد البيانات

U�iH'b�0sو�X�%�،�h����� �'ل�.'אD$�א�Iא���N7��1� ��K7א ���� �N�'د��U��F�.��0אsو�X�%و�،��ROV א

n�D�aqM ��. Enter א�.�nVو.���� �

�(�9�KS d� ����K�`Nא ��1Q��Q$Rل�3�� �א �N7��1��U� ،�K3�P ��� �ROV ����Q���Q$א �MQא� ،�E$ אل

GridView�:��Q'�)��.�����]ن���Cدون��a7! .� �

،�l�N��%��Fא��$%�a��ع��'s'\0 אs update panel אل��g�!�0sو�، GridView �osא��3،�و����53א�Hز�osא�، ���'د����Uא $Hس�א\�Triggers �F� ��s אل�� �KPTא���K3�P ���א P'د�אV���، :� �

كود<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default5.aspx.cs" Inherits="Default5" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Untitled Page</title> </head>

Page 599: خطوة بخطوة مع فيجوال بسيك دوت نت

599

<body> <form id="form1" runat="server"> <center> <div> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ItemsConnectionString %>" SelectCommand="SELECT * FROM [Items] WHERE ([ItemPrice] &lt; @ItemPrice)"> <SelectParameters> <asp:ControlParameter ControlID="TextBox1" DefaultValue="0" Name="ItemPrice" PropertyName="Text" Type="Int64" /> </SelectParameters> </asp:SqlDataSource> <br /> <br /> <asp:Button ID="Button1" runat="server" Text="Button" /> &nbsp;<asp:TextBox ID="TextBox1" runat="server">1000</asp:TextBox> <asp:Label ID="Label1" runat="server" Text="����0j�M� ��5D��Rא א���"></asp:Label>

<br /> <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true"> </asp:ScriptManager> <br /> <asp:UpdatePanel ID="UpdatePanel1" runat="server" > <ContentTemplate> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ID" DataSourceID="SqlDataSource1" AllowPaging="True" AllowSorting="True" AutoGenerateDeleteButton="True" AutoGenerateEditButton="True" AutoGenerateSelectButton="True" BackColor="White" BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px" CellPadding="3" GridLines="Horizontal" onselectedindexchanged="GridView1_SelectedIndexChanged"> <FooterStyle BackColor="#B5C7DE" ForeColor="#4A3C8C" /> <RowStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" /> <Columns> <asp:CommandField ShowSelectButton="True" /> <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" ReadOnly="True" SortExpression="ID" /> <asp:BoundField DataField="ItemName" HeaderText="ItemName" SortExpression="ItemName" /> <asp:BoundField DataField="ItemPrice" HeaderText="ItemPrice"

Page 600: خطوة بخطوة مع فيجوال بسيك دوت نت

600

SortExpression="ItemPrice" /> <asp:BoundField DataField="ItemPicture" HeaderText="ItemPicture" SortExpression="ItemPicture" /> </Columns> <PagerStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" HorizontalAlign="Right" /> <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" /> <HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#F7F7F7" /> <AlternatingRowStyle BackColor="#F7F7F7" /> </asp:GridView> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger EventName="Click" ControlID="Button1" /> </Triggers> </asp:UpdatePanel> <br /> <br /> <br /> </div> </center> </form> </body> </html>

� ����`����.�a7!ق א�ن�H�O . א ��ROV،�و9��ªא

AJAX Toolkit:

53� ���B� �D'F���!'و��PQ�3� 3��د¨ �'!�� ���1�� n�D� ¤$D����t �<��NPא� AJAX א�دوא�hא ���אض�،

�NS��3$7\א�hא9دوא :� �� �

رابط

http://www.asp.net/ajax/ajaxcontroltoolkit/samples/

�NP> �NS��S${�،���F���� �: �5D�z�,�K���!��3א�وא�$��Q���5D��g�!�iא �h�S'Q$�Oא �� �

بطرا

http://www.asp.net/ajax/ajaxcontroltoolkit/

Page 601: خطوة بخطوة مع فيجوال بسيك دوت نت

601

� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �

Page 602: خطوة بخطوة مع فيجوال بسيك دوت نت

602

� �� �� �� �� �� �

�WS����_�D�03��Nא�אP��$L'ن�.$�'%��Q�gN � �N�bو.net 2008�D�U�7ط�א�������N _��وא W�'�d��n�Dא.net 2008��Q�z�T��' �.�،�HC%'��53א��Cن�PQ'ن��O3$א�وCن��C'ن�.$����U��FSز�Qد�iא\��!��و �

� ���Q���5D�X��P �:3$و��tא� ZPو������RObא 3��NP>�n�D�X��P'א���bא�� ع����I��n�D�+��א �

com.blogspot.Technical-lAhmedGama.www� �

� ��]1I�n�� '�و%$C�h��U�]1Iא P'د�Cو��Uא\��'C��3و�� M!�،��Q�gN �$אDC��Q'د�و�U�H��Cא و���Fذ���U�hא��Q$ � ���ن ' � ����$א ��[�'ن �MQא� ،� �א� ZPو�� $Q��� n�D� :��cא���H� ' � iد��� �א �Q���U� �!�[�'ن �j 3�

���Q'1و���Yא N�¢�א�h��7�����WS�53א�א �X��Pא.Zא��\.� �� �

�X��P C��S���53�KPو���C�$Dو�دWS�������U�cFDא�א�A�IC�i�3��P,�H��C.� �� �

�Y\�� �.وא�XH���$FLא ��Y�BC�:�Rbو�: ��n�Dو�$F)��N����n�Dא���n�bو.� �

� �� �� �� �� �� �� �� �� �� �

خاتمة الكتاب

Page 603: خطوة بخطوة مع فيجوال بسيك دوت نت

603

� �� �� �� �� �� �−��X���Pro C# 2008.�� �

Pro C# 2008 and the .NET 3.5 Platform, Exploring the .NET universe using curly brackets. Aouther: Andrew Troelsen. Edition: Fourth Edition

−�MSDN.�� �

MSDN – Microsft Developer Network, http://msdn2.microsoft.com/en-us/default.aspx

−�9�73�X��� �.�A$�N3�53��.�O�3�h!�`'אل������ �com.arab4vb.www://http

−����4� ����� .�A$�N3�53��.�O�3�h9�73א ��Q�Oא

http://www.arabteam2000-forum.com/ �

� �� �� �� �� �� �� �� �� �� �

المصادر

Page 604: خطوة بخطوة مع فيجوال بسيك دوت نت

604

� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �

Page 605: خطوة بخطوة مع فيجوال بسيك دوت نت

605

� �