كاتب الموضوع : أنس محمود
بسم الله الرحمن الرحيم
اللهم اجعل عملي خالصا لوجهك
الدرس ( 0 ) : الكائن Control خصائصه - طرقه - أحداثه >> الجزء الثالث ( والأخير ) : الأحداث <<
السلام عليكم ورحمة الله وبركاته ،
أولاً : أحداث الفأرة :-
الحدث Click : يتم إطلاقه بمجرد النقر على الأداة ، ووسائط هذا الحدث عادية ،
الحدث MouseClick : يتم إطلاقه عند النقر بالفأرة على الأداة ، و الفرق بينه وبين Click ، أن وسائط هذا الحدث من النوع MouseEventArgs ، ويشترط لإطلاق الحدث MouseClick النقر بالفأرة ، وليس بالمفتاح Space .
الحدث DoubleClick : يتم إطلاقه بمجرد النقر المزدوج على الأداة ، ووسائط هذا الحدث عادية ، والفرق بين الحدث DoubleClick والحدث MouseDoubleClick ، هو نفس الفرق بين Click و MouseClick .
الحدث MouseDown : يتم إطلاقه عند الضغط على الأداة ، والضغط لا يساوي النقر في المعنى ، حيث لا يشترط للضغط تحرير زر الفأرة ، ولكن يشترط ذلك للنقر . ويلي هذا الحدث مباشرة :
الحدث MouseUp : يتم إطلاقه عند تحرير زر الفأرة من الضغط .
الحدث MouseMove : يتم إطلاقه عند تحرك مؤشر الفأرة على الأداة ، ومثله الحدث MouseHover ، ولكن وسائطه عادية .
الحدث MouseWheel : يتم إطلاقه عند تحريك عجلة الفأرة .
الحدث MouseEnter : يتم إطلاقه بمجرد بداية دخول مؤشر الفأرة إلى الأداة . وعلى العكس :
الحدث MouseLeave : يتم إطلاقه بمجرد خروج مؤشر الفأرة من الأداة .
الكائن MouseEventArgs : يحتوي على عدة خصائص مفيدة ، وهو يمثل وسائط أغلب أحداث الفأرة :
Button : تمثل الزر الذي وقع عليه الحدث .
Delta : تمثل مقدار تغير عجلة الفأرة .
Location : تمثل موقع مؤشر الفأرة . وكذلك X , Y .
تابع == == >
[b]ثانياً : أحداث لوحة المفاتيح :-[/b]
الحدث KeyPress : يتم إطلاقه إذا تم الضغط على أحد مفاتيح لوحة المفاتيح ، وسائط هذا الحدث تحتوي على خاصيتين :
KeyChar : تعود بقيمة الحرف الذي تم الضغط عليه .
Handled : إذا كنت تريد إلغاء الحدث كان لم يقع ، مع عدم ظهور أي تأثير لضغطة الزر ، أرسل القيمة True إلى هذه الخاصية ( ستكون مفيدة إذا كنت تريد منع مدخلات معينة في الـ TextBox )
الحدث KeyDown : يتم تكرار إطلاقه طالما الزر مازال مضغوطا إلى أن يتم تحرير الزر ، وسائط هذا الحدث تحتوي بالإضافة لوسائط الحدث KeyPress الى الخصائص :-
ِالخصائص Alt , Control , Shift : تمثل حالة الأزرار Alt , Ctrl , Shift من حيث هل هي مضغوطة أم لا .
الخاصية KeyCode : تعود بالزر الذي تم ضغطه ولكن من خلال تركيب Enum .
والفرق بين الحدثين KeyPress و KeyDown يكمن في أن هذا الحدث KeyPress يتم إطلاقه مع الأرقام والأحرف المطبوعة ، والمفاتيح Enter , Tab , Esc ، أما باقي أزرار لوحة المفاتيح فإنها تطلق الحدث KeyDown .
الحدث KeyUp : يتم إطلاقه بعد تحرير الزر من الضغط ، ووسائط هذا الحدث مثل وسائط الحدث KeyDown .
تابع == == >
[b]أحداث التركيز :[/b]
الحدث Enter : يتم إطلاقه بمجرد انتقال التركيز إلى الأداة ، ويتم إطلاق الحدث GotFocus بعده مباشرة ، لذلك من الأفضل التعامل من الحدث Enter لأنه يقع قبله .
الحدث Leave : يتم إطلاقه بمجرد فقدان الأداة للتركيز ، ويتم إطلاق الحدث LostFocus بعده مباشرة ، لذلك من الأفضل التعامل من الحدث Leave لأنه يقع قبله .
الحدث Validating : يقع عند قيام المستخدم بنقل التركيز من الأداة الحالية إلى أداة أخرى ، بشرط أن تكون قيمة الخاصية CausesValidation للأداتين مساوية True ، فإذا قمت بإلغاء الحدث :-
كود :
[color=#000000][COLOR=#0000bb] e[/color][color=#007700].[/color][color=#0000bb]Cancel [/color][color=#007700]= [/color][COLOR=#0000bb]True
[/COLOR][/COLOR]
فلا يتم انتقال التركيز ، وإلا يقع الحدث Validated ، وينتقل التركيز ، ويفيدك هذا الحدث كثيراً مع الأداة TextBox للتحقق من مدخلات المستخدم .
تابع == == >
أحداث السحب والإفلات :
الحدث DragEnter : يتم إطلاقه عند دخول مؤشر الفأرة على الأداة محمل بالبيانات .
الحدث DragDrop : يتم إطلاقه عند إفلات البيانات على الأداة .
الحدث DragOver : يتم إطلاقه عند انتهاء عملية السحب والإفلات .
والأحداث مشتركة في وسائطها من النوع DragEventArgs .
الكائن DragEventArgs : يحتوي على عدة خصائص مفيدة :-
الخاصية Effect : تمثل تأثيرات السحب والإفلات .
الخاصية AllowedEffect : تعود بالتأثير المرسل من مصدر السحب .
الخواص X , Y : تحدد موقع مؤشر الفأرة .
الخاصية Data : تمثل البيانات المرسلة مع عملية السحب والإفلات ، وهو من النوع IDataObject ، ويحتوي على عدة طرق :-
الطريقة GetData : تعود بالبيانات المرسلة ، مثال :-
كود :
[color=#000000][COLOR=#0000bb] e[/color][color=#007700].[/color][color=#0000bb]Data[/color][color=#007700].[/color][color=#0000bb]GetData[/color][color=#007700]( [/color][color=#0000bb]Windows[/color][color=#007700].[/color][color=#0000bb]Forms[/color][color=#007700].[/color][color=#0000bb]DataFormats[/color][color=#007700].[/color][color=#0000bb]Text [/color][COLOR=#007700])
[/COLOR][/COLOR]
الطريقة GetDataPresent : تعود بقيمة منطقية تمثل على نوع البيانات ، مماثلة للنوع المرسل أم لا .
كود :
[color=#000000][COLOR=#007700]If [/color][color=#0000bb]e[/color][color=#007700].[/color][color=#0000bb]Data[/color][color=#007700].[/color][color=#0000bb]GetDataPresent[/color][color=#007700]([/color][color=#0000bb]Windows[/color][color=#007700].[/color][color=#0000bb]Forms[/color][color=#007700].[/color][color=#0000bb]DataFormats[/color][color=#007700].[/color][color=#0000bb]Text[/color][color=#007700]) [/color][COLOR=#0000bb]Then
[/COLOR][COLOR=#dd0000]'نص'
[/COLOR][COLOR=#007700]Else
[/COLOR][COLOR=#dd0000]'ليس نص'
[/COLOR][color=#0000bb]End [/color][COLOR=#007700]If
[/COLOR][/COLOR]
لمزيد من المعلومات حول السحب والإفلات يمكنك البحث في المنتدى .
أحداث [Propery]Changed : يقع هذا النوع من الأحداث عند تغيير قيمة الخاصية المناظرة للحدث ،
مثل : EnabledChanged , FontChanged , TextChanged , ... .
تابع == == >
أحداث أخرى :-
الحدث ControlAdded : يتم إطلاقه عند إضافة كائن محضون للأداة ، وسائط الحدث تحتوي على الخاصية Control والذي يمثل الكائن الذي تم إضافته .
الحدث ControlRemoved : يتم إطلاقه عند حذف كائن محضون من الأداة ، وسائط الحدث تحتوي على الخاصية Control والذي يمثل الكائن الذي تم حذفه .
الحدث Disposed : يتم إطلاقه عند إفراغ الذاكرة من الكائن وقتله .
الحدث HelpRequested : يتم إطلاقه عند طلب مساعدة ( بالضغط على F1 أو الضغط على الأداة بعد تحديد زر المساعدة للنموذج ) ، وسائط هذا الحدث تحتوي على :-
الخاصية Handled : تخبر إطار العمل .NET بأنك قمت بعمل اللازم و تحرير زر المساعدة بارسال القيمة True لها .
الخاصية MousePos : تمثل موقع مؤشر الفأرة الحالي .
الحدث Paint : يتم إطلاق هذا الحدث كلما دعت الحاجة إلى إعادة رسم الأداة ( قد تكون أحد الأسباب استدعاء الطريقة Refresh مثلا ) ، ويحتوي وسائط هذا الحدث على :
الخاصية Graphics : هذا هو المهم معنا في هذا الحدث ، وهو من النوع Graphics ويمكنك رسم ما تشاء على الأداة ، باستخدام الـ GDI+ ( لست هنا بصدد شرح الـ GDI+ ، ولكن يمكنك مراجعة مواضيع الأخ Silverlight – عمر - ، وغيرها من المواضيع بالمنتدى )
الخاصية ClipRectangle : تعود بقيمة من النوع Rectangle تمثل أبعاد منطقة الرسم ( إن صح التعبير )
وهكذا انتهى الدرس ( 0 ) بفضل الله تعالى ،
إن شاء الله ، في الموضوع القادم نبدأ أول دروس دورتنا الفعلية