كيف اتحكم بمدخلات TextBox الا يقبل بعد العلامة العشرية الا رقمين فقط 00.00
كيف اتحكم بمدخلات Textbox الا يقبل بعد العلامة العشرية الا رقمين فقط 00.00
أحسن طريقة هي باستعمال مربع النص MaskedTextBox و تحديد الخاصية Mask على قيمة مثل ##.### ### ### حيث كل كاراكتر # يمثل رقما.
أما إذا كنت تريد استعمال TextBox فأحد الطرق و التي أعمل بها على مشاريعي هي ترك الحرية للمستخدم في إذخال العدد الذي يريد و عند الحدث Validating أقوم بتصحيح صيغة العدد كما يجب :
' يحدث قبل الإنتقال إلى مربع آخر و للبرنامج الحق في وقف أو ترك عملية الإنتقال تتم
Private Sub TextBox1_Validating(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating
Dim d As Decimal
' تحويل النص إلى عدد
Dim b As Boolean = Decimal.TryParse(TextBox1.Text, d)
' إذا نجحت العملية تتم عملية تصحيح الصيغة
If b = True Then
' تصحيح صيغة العدد الموجود على مربع النص
TextBox1.Text = d.ToString("N02")
Else ' في حالة فشل عملية تحويل النص إلى عدد
' وقف عملية الإنتقال إلى مربع آخر حتى يتم إذخال عدد صحيح
e.Cancel = True
' إعلام المستخدم
MsgBox("المرجو إذخال عدد صحيح قبل المتابعة.", MsgBoxStyle.Exclamation)
End If
End Subتحياتي,,,
السلام عليكم ورحمة الله وبركاته
أخى إتبع هذه الطريقة لكى تعرف أن تتحكم فى العلامة العشريةللتكست بوكس
فالتأتى على حدث leave للتكست بوكس
وأكتب هذا الكود
Private Sub TextBox1_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.Leave
If LTrim$(TextBox1.Text) = "" Then Exit Sub
Dim X, Y As Integer
X = TextBox1.Text.IndexOf(".")
Y = TextBox1.Text.Length
If X = -1 Then Exit Sub
If Y - X > 3 Then
MsgBox("الرقم يجب أن يكون برقمين عشريين فقط")
TextBox1.Focus()
End If
End Subويارب يكون فيه إفادة ليك يا أخى
بالتوفيق
-اللهم إنى أعوذ بك من عذاب فى النار وعذاب فى القبر ومن فتنةالمحيى والممات وفتنة المسيح الدجال-
عندما تضيق بك الدنيا فلا تقل يارب عندى هم كبير ولكن قل يا هم عندى رب كبيييير
اللهم إنى أتيت بابك مستغفراً فإن غفرت لى وأدخلتنى فأنت أهلٌ لذلك
وإن لم تغفر لى وطردتنى فأنا أهلٌ لذلك
اخى حسام تشكر ياغالي عالرد الجميل
اخي محمد رضى هذه اول مرة ارى كود في الحدث .Validating
و لكن هل هذا الحدث لا يعمل الا بعد مغادرة الكنترول
انا استخدم الطريقة التالية طريقة الحدث KeyPress
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress If IsNumeric(e.KeyChar) Or e.KeyChar = Chr(41) Or e.KeyChar = Chr(8) Then e.Handled = False Else e.Handled = True End If End Sub
لكن الحدث Validating
أكيد ما حطوا مطري مايكروسوفت عبثا , فما تعليقك على الموضوع يا صديقي
<EMBED src=http://www.abdelghafar.com/images/banners/bm2.swf width=486 height=60 type=application/x-shockwave-flash EMBED < menu="false" loop="true" quality="high">
السلام عليكــم ورحمـة الله وبركاتــه ،،
اقتباسو لكن هل هذا الحدث لا يعمل الا بعد مغادرة الكنترول
الحدث Validating يعمل عند مغادرة الكنترول ويمكنك إسناد القيمة True إلى الخاصية e.Cancel لمنع المستخدم من مغادرة الكنترول
مع ملاحظة أن هذا الحدث لا يعمل إلا إذا كانت قيمة الخاصية CausesValidation للأداة True
وفى رأيى إن لم تكن تريد استخدام MaskedTextBox فكما قال الأخ الفاضل محمد رضى هذا هو الحدث الأمثل لتهيئة المدخلات مع بعض الكود الإضافى لمنع المستخدم من كتابة حروف فى الحدث KeyDown أو KeyPress كما فعل الأخ الفاضل عبدالله
إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال
الطريقة التي أتبع و التي اقترحت على الأخ bnitt مستوحاة من برنامج MS EXCEL الذي يترك للمستخدم كل الحرية في إدخال محتوى الخلية و عند الضغط على الزر Enter يقوم بالتحقق من المحتوى الذي تم إدخاله (Validating) فإذا كان المحتوى صحيح تأخذ الخلية المحتوى الجديد بالصيغة المحددة على Cell Format و إذا كان هناك خطأ يظهر مربع رسالة خطأ و يعود لوضع التحرير. طبعا Excel يحاول تصحيح الخطأ إلا أنني طبعا لست Microsoft :D
تحياتي...
Dim ch As Char
ch = e.KeyChar
If Asc(ch) = 13 Then
SendKeys.Send("{TAB}")
Exit Sub
End If
If ch.IsDigit(ch) = True Or ch.GetHashCode = 524296 Then
e.Handled = False
Else
e.Handled = True
End If