س:
في الأداة NumericUpDown، إذا
مسح المستخدم الرقم المكتوب بضغط الزر Delete، تعرض الأداة نصا فارغا، ولا يظهر فيها أي رقم، بينما تظل الخاصية
Value محتفظة
بنفس قيمتها القديمة، ولا تعيد صفرا.. فكيف يمكن حل هذه المشكلة؟
ج:
يمكن حل هذه المشكلة باستخدام الحدث TextChanged.. هذا الحدث موجود ضمن أحداث الأداة رقم أنه لا يظهر مع باقي
الأحداث في قائمة الإكمال التلقائي أو قائمة الأحداث في محرر الكود.. نفس الأمر
يحدث أيضا مع الخاصية Text، فرغم
أن الأداة تمتلكها، فهي تخفيها لتدفعك إلى استخدام الخاصية Value.. كل ما سنفعله هو:
- استخدام الحدث TextChanged لفحص قيمة الخاصية
Text، فإن كانت فارغة،
فسنضع في الخاصية Value أصغر
قيمة تسمح الأداة بعرضها (لا تضع صفرا مباشرة، فقد يكون أصغر من القيمة الصغرى
ويحدث خطأ).
- من المهم أيضا أن نضع نفس
القيمة في الخاصية Text، فلو
كانت الأداة تعرض أصغر قيمة قبل أن يحذفها المستخدم، وحاولت وضعها مرة أخرى في
الخاصية Value (التي ما زالت
تحتفظ بنفس القيمة فعلا) فلن تفعل الأداة شيئا باعتبار أن الخاصية لم تتغير، ولن
يظهر الرقم مرة أخرى في مربع النص الخاص بالأداة، لهذا علينا وضعه بأنفسنا.
-
أخيرا، سنحدد النص المكتوب في الأداة.. ونظرا لأن الأداة لا تمتلك الوسيلة SelectAll، ولا تمتلك الخاصيتين SelectionStart و SelectionLength، فسنستخدم الصيغة
الثالثة من الوسيلة Select التي
تستقبل موضع بداية النص المراد تحديده، وطول التحديد.
هذا
هو الكود:
Private Sub NumericUpDown1_TextChanged(sender As Object, e As EventArgs) Handles NumericUpDown1.TextChanged
If NumericUpDown1.Text = "" Then
NumericUpDown1.Value = NumericUpDown1.Minimum
NumericUpDown1.Text = NumericUpDown1.Minimum
NumericUpDown1.Select(0, NumericUpDown1.Text.Length)
End If
End Sub
ليست هناك تعليقات:
إرسال تعليق
ملحوظة: يمكن لأعضاء المدونة فقط إرسال تعليق.