المتابعون للمدونة

السبت، 16 نوفمبر 2013

محو القيمة من الأداة NumericUpDown


س: في الأداة 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

ليست هناك تعليقات:

إرسال تعليق

ملحوظة: يمكن لأعضاء المدونة فقط إرسال تعليق.

صفحة الشاعر