س:
عند تحريك عجلة الفأرة أثناء وجود المؤشر Focus داخل الأداة NumericUpDown يتم إنقاص أو زيادة العدد الذي تعرضه الأداة.. فكيف يمكن منع هذا؟
ج:
المكان المناسب لتعطيل أي وظيفة تؤديها عجلة الفأرة في أي أداة، هو الحدث MouseWheel.. لكن المعامل
الثاني e لهذا الحدث من
النوع MouseEventArgs، وهو
لا يمتلك الخاصية Handled التي
يمكن جعل قيمتها True لإلغاء
الحدث.. فما العمل؟
المفاجأة
هي أن المعامل e في
الحدث MouseWheel (في
كل الأدوات) هو في الحقيقة من نوع الفئة HandledMouseEventArgs التي تمتلك الخاصية Handled، لكن لسبب ما قررت ميكروسوفت أن تخفي عنك هذه الحقيقة وتكتب نوع
المعامل من الفئة الأم MouseEventArgs.. لهذا
كل ما عليك فعله هو تحويل نوع المعامل e إلى نوعه الأصلي، واستخدام الخاصية Handled الخاصة به لإلغاء حدث تحريك عجلة الفأرة كالتالي:
CType(e,
HandledMouseEventArgs).Handled = True
وهذا
هو كل شيء!
ملحوظة:
إذا
أردت أيضا أن تمنع المستخدم من تغيير العدد المعروض في الأداة NumericUpDown عند ضغط السهم
العلوي أو السهم السفلي من لوحة المفاتيح، فكل ما عليك هو وضع القيمة False في الخاصية InterceptArrowKeys:
NumericUpDown.InterceptArrowKeys = False
ليست هناك تعليقات:
إرسال تعليق
ملحوظة: يمكن لأعضاء المدونة فقط إرسال تعليق.