منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : طلب شرح كود
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام علكيم
ممكن من الإخوة الكرام شرح الكود التالي
كود :
    Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress

Select Case e.KeyChar
           Case ChrW(8)

           Case ChrW(46)
               e.KeyChar = ChrW(44)
           Case ChrW(44), ChrW(48) To ChrW(58)
           Case Else
               e.KeyChar = ChrW(0)
               Beep()
       End Select
الكود يضمن ان الستخدم لن يدخل الا ارقام او الرمز , فقط 
e.KeyChar قيمة من نوع حرف char  يمثل الزر الذي ضغط عليه المستخدم

Select case نخبر البرنامج ماذا يفعل بناء على قيمة الزر المضغوط

ChrW دالة تعود بحرف بناء على كود الاسكيي الخاص 

قائمة الاسكي كاملة من هنا : http://www.asciitable.com/

هو زر backspace نخبره ان لايفعل شيء اذا تم ضغط هذا الزر

ChrW(48) To ChrW(58) هو الارقام من 0 الى 9  ، لايفعل شيء ايضا لانه رقم ، وكذلك بالنسبة ل ChrW(44) وهو الفاصلة

ChrW(46) هو النقطة ، نخبره بان يدخل فاصلة بدلا منها 

اذا كان المدخل غير ذلك لايضغط على شيء ChrW(0) تمثل Null وكذلك يصدر صوت عن طريق Beep
(09-08-20, 09:55 PM)Anas Mahmoud كتب : [ -> ]الكود يضمن ان الستخدم لن يدخل الا ارقام او الرمز , فقط 
e.KeyChar قيمة من نوع حرف char  يمثل الزر الذي ضغط عليه المستخدم

Select case نخبر البرنامج ماذا يفعل بناء على قيمة الزر المضغوط

ChrW دالة تعود بحرف بناء على كود الاسكيي الخاص 

قائمة الاسكي كاملة من هنا : http://www.asciitable.com/

هو زر backspace نخبره ان لايفعل شيء اذا تم ضغط هذا الزر

ChrW(48) To ChrW(58) هو الارقام من 0 الى 9  ، لايفعل شيء ايضا لانه رقم ، وكذلك بالنسبة ل ChrW(44) وهو الفاصلة

ChrW(46) هو النقطة ، نخبره بان يدخل فاصلة بدلا منها 

اذا كان المدخل غير ذلك لايضغط على شيء ChrW(0) تمثل Null وكذلك يصدر صوت عن طريق Beep

بارك الله فيك
كيف يمكني ان أطبق الكود على اكثر من textbox دفعة واحدة ؟
(10-08-20, 02:08 AM)paveldida كتب : [ -> ]كيف يمكني ان أطبق الكود على اكثر من textbox دفعة واحدة ؟

اضف التكست بوكسات هنا بعد Handles :
كود :
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress,TextBox2.KeyPress,TextBox3.KeyPress
(10-08-20, 03:50 PM)Anas Mahmoud كتب : [ -> ]
(10-08-20, 02:08 AM)paveldida كتب : [ -> ]كيف يمكني ان أطبق الكود على اكثر من textbox دفعة واحدة ؟

اضف التكست بوكسات هنا بعد Handles :
كود :
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress,TextBox2.KeyPress,TextBox3.KeyPress

بارك الله فيك ، نجح معي
(09-08-20, 08:31 PM)paveldida كتب : [ -> ]
السلام علكيم
ممكن من الإخوة الكرام شرح الكود التالي
كود :
    Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress

Select Case e.KeyChar
           Case ChrW(8)

           Case ChrW(46)
               e.KeyChar = ChrW(44)
           Case ChrW(44), ChrW(48) To ChrW(58)
           Case Else
               e.KeyChar = ChrW(0)
               Beep()
       End Select

لما استخدمت الكود وجدت انه بيبدل الفاصله الرقميه الحقيقيه بفاصله اخرى لا تصلح للعمليات الحسابيه فسببت عندي نتيجه خطا

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

 ثانيا لاداعي ان نستبدل الفاصلة بالنقطة يكفي ان يكون الكود بهذا الشكل
كود :
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress

       Select Case e.KeyChar
           Case ChrW(8)
           Case ChrW(46), ChrW(48) To ChrW(58)
           Case Else
               e.KeyChar = ChrW(0)
               Beep()
       End Select
   End Sub