تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] التحقق من المدخلات النصية Textbox Validation - لبرنامج أكثر امانا
#2
Exclamation 
طيب الآن ما الخطوة التالية ؟

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

تخيل ان عندك 5 مربعات نصية للمدخلات ( اسم ورقم تليفون وبريد الكتروني وقيمة المرتب وتاريخ التسجيل)  ، فان مطالب لكل مربع نص ان تضيف احداث validating و validated التي تقوم بنفس الشيء :

في البداية تتحقق من ان المدخل يوافق الشرط المعطى ، والا تلغي العملية وترسل رسالة خطأ ، واذا تم التحقق تكمل العملية وتمسح رسالة الخطأ

كود :
   Private Sub txtName_Validating(ByVal sender As Object, ByVal e As CancelEventArgs) Handles txtName.Validating
       Dim txt = DirectCast(sender, TextBox)

       If txt.Text.Trim().Length < 2 Then
           e.Cancel = True
           errorProvider1.SetError(txt, "الاسم لايمكن ان يكون اقل من حرفين")
       End If
   End Sub

   Private Sub txtName_Validated(ByVal sender As Object, ByVal e As EventArgs) Handles txtName.Validated
       Dim txt = DirectCast(sender, TextBox)
       errorProvider1.SetError(txt, "")
   End Sub


من غير المنطقي ان نكرر الكود كل مرة نضيف فيها مربع نص جديد ، انا شخصيا اكره تكرار الاكواد

ماذا اذا قمنا بتعريف اجراء عام لاي مربع نص يضيف هذه الاحداث ، ونخبره فقط بالشرط والرسالة ؟ فكره جيدة اليس كذلك ؟

كود :
   Sub AddValidation(textBox As TextBox, validationChecker As Func(Of String, Boolean), errorMsg As String)
       AddHandler textBox.Validating, Sub(s, e)
                                          Dim txt = DirectCast(s, TextBox)

                                          If Not validationChecker(txt.Text) Then
                                              e.Cancel = True
                                              errorProvider1.SetError(txt, errorMsg)
                                          End If
                                      End Sub

       AddHandler textBox.Validated, Sub(s, e)
                                         Dim txt = DirectCast(s, TextBox)
                                         errorProvider1.SetError(txt, "")
                                     End Sub
   End Sub



الاجراء يأخذ ثلاث مدخلات :
  1. مربع النص المراد اضافة احداث التحقق له
  2. دالة تمثل الشرط الذي يتم بناء عليه التحقق ( دالة عادية مدخلها string وتخرج bool ، او تعبير لمدا )
  3. رسالة الخطأ التي ستظهر في حالة عدم صلاحية البيانات
داخل الاجراء قمنا باضافة الاحداث كما في المشاركة الاولى في الموضوع باستخدام اضافة الاحداث اثناء التشغيل باستخدام تعابير لمدا

الان كل ما علينا فعله لاضافة احداث تحقق لاي مربع نص هو كتابة سطر واحد في المشيد او في حدث اللود للفورم :

للتحقق من الاسم اكبر من حرفين :
كود :
        AddValidation(txtName, Function(x) x.Trim().Length >= 2, "الاسم لايمكن ان يكون اقل من حرفين")
 
للتحقق من البريد الالكتروني :

كود :
       AddValidation(txtEmail, Function(x) Regex.IsMatch(x, "^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$"), "صيغة بريد الكتروني غير صالحة")


للتحقق من قيمة رقم عشري :

كود :
       Dim d As Double
       AddValidation(txtSalary, Function(x) Double.TryParse(x, d), "الرقم غير صالح")


وهكذا كلما اردت اضافة مربع نص اضف له سطر التحقق 
ويبقى استخدام ValidateChildren() كما هو ،
المثال بعد التعديل في المرفقات


الملفات المرفقة
.zip   Validating TextBox VB.zip (الحجم : 68.21 ك ب / التحميلات : 165)
الرد }}}


الردود في هذا الموضوع
RE: التحقق من المدخلات النصية Textbox Validation - لبرنامج أكثر امانا - بواسطة Anas Mahmoud - 23-08-20, 10:11 AM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] التحقق من تكرار البيانات بعد الاستيراد من اكسيل loay775 1 547 01-04-24, 06:32 AM
آخر رد: loay775
  درس عمل باسورد لبرنامج بلغة Vb.net boty 5 6,068 23-11-21, 12:31 AM
آخر رد: Arfat007
  [مقال] إضافة خاصية التحجيم التلقائي - AutoSize - إلى أداة مربع النص - TextBox sooriaty03 10 12,828 21-03-21, 09:53 PM
آخر رد: عبد الهادي بهاب
  طريقة تقسيم كودك البرمجة الي سطرين أو أكثر كم تريد dametucorazon 1 4,385 06-09-19, 12:55 AM
آخر رد: سعود
  كيف تجعل برنامجك عالميا و يدعم أكثر من لغة silverlight 6 6,020 29-05-19, 10:32 PM
آخر رد: egbest2
Exclamation [VB.NET] التعامل مع ال CMD عن طريق ال TextBox YousefOkasha 5 5,498 02-06-18, 09:34 PM
آخر رد: YousefOkasha
  [درس فيديو] مثال بسيط لبرنامج إجازات فقط لأغراض الشرح (الدرس الأول) عبدالله الدوسري 7 12,100 28-04-18, 06:55 PM
آخر رد: moniam
  [VB.NET] عايز كود مع الشرح لبرنامج اداره محل الإلكترونيات اسامه الهرماوي 1 2,549 25-02-18, 12:37 AM
آخر رد: sendbad100
  [VB.NET] تنسيق البينات بناء على المدخلات datagridview vb net فيديو أحمد النجار 0 3,920 24-01-15, 07:42 PM
آخر رد: أحمد النجار
  معلومة ::: Search In TextBox RaggiTech 1 2,782 06-10-12, 08:56 PM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: