الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف اتحكم بمدخلات Textbox الا يقبل بعد العلامة العشرية الا رقمين فقط 00.00

بدأه bnitt في 14 أكتوبر 2009 · 7 رد · 4,262 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

كيف اتحكم بمدخلات TextBox الا يقبل بعد العلامة العشرية الا رقمين فقط 00.00

#2

أحسن طريقة هي باستعمال مربع النص 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

تحياتي,,,

#3

السلام عليكم ورحمة الله وبركاته

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

فالتأتى على حدث 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

ويارب يكون فيه إفادة ليك يا أخى

بالتوفيق

-اللهم إنى أعوذ بك من عذاب فى النار وعذاب فى القبر ومن فتنةالمحيى والممات وفتنة المسيح الدجال-

عندما تضيق بك الدنيا فلا تقل يارب عندى هم كبير ولكن قل يا هم عندى رب كبيييير

اللهم إنى أتيت بابك مستغفراً فإن غفرت لى وأدخلتنى فأنت أهلٌ لذلك

وإن لم تغفر لى وطردتنى فأنا أهلٌ لذلك

#4

اخى حسام تشكر ياغالي عالرد الجميل

#5

اخي محمد رضى هذه اول مرة ارى كود في الحدث .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">

#6

السلام عليكــم ورحمـة الله وبركاتــه ،،

اقتباس
و لكن هل هذا الحدث لا يعمل الا بعد مغادرة الكنترول

الحدث Validating يعمل عند مغادرة الكنترول ويمكنك إسناد القيمة True إلى الخاصية e.Cancel لمنع المستخدم من مغادرة الكنترول

مع ملاحظة أن هذا الحدث لا يعمل إلا إذا كانت قيمة الخاصية CausesValidation للأداة True

وفى رأيى إن لم تكن تريد استخدام MaskedTextBox فكما قال الأخ الفاضل محمد رضى هذا هو الحدث الأمثل لتهيئة المدخلات مع بعض الكود الإضافى لمنع المستخدم من كتابة حروف فى الحدث KeyDown أو KeyPress كما فعل الأخ الفاضل عبدالله

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#7

الطريقة التي أتبع و التي اقترحت على الأخ bnitt مستوحاة من برنامج MS EXCEL الذي يترك للمستخدم كل الحرية في إدخال محتوى الخلية و عند الضغط على الزر Enter يقوم بالتحقق من المحتوى الذي تم إدخاله (Validating) فإذا كان المحتوى صحيح تأخذ الخلية المحتوى الجديد بالصيغة المحددة على Cell Format و إذا كان هناك خطأ يظهر مربع رسالة خطأ و يعود لوضع التحرير. طبعا Excel يحاول تصحيح الخطأ إلا أنني طبعا لست Microsoft :D

تحياتي...

#8
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

FineDesign For Graphic and WebDesign

ForEach(Minute in MyLife)

MyExperience ++;

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…