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

استفسار حول ال Textboxes

بدأه OricalcosZy في 20 أغسطس 2010 · 10 رد · 942 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

عندي مشكلان في Textbox

الأول :

أريد في البداية من ال TextBox ان يقبل الارقام فقط وعلامة "-"

اذا ضغطت علامة "-" أريد أن يتحول ال TextBox الى قبول الارقام فقط

اما اذا ضغطت رقما محددا أريد أن يبقى TextBox يقبل الارقام فقط

هذا هو الكود الذي استعملته ولم يؤد المهمة كاملة بل أدى الشرط الأول فقط

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
    	If TextBox1.Text.StartsWith("-") Then
        	If Char.IsControl(e.KeyChar) = False And Char.IsDigit(e.KeyChar) = False Then
            	e.Handled = True
        	End If
    	Else
        	If Char.IsControl(e.KeyChar) = False And Char.IsDigit(e.KeyChar) = False Then
            	e.KeyChar = Nothing
        	End If
    	End If
	End Sub

الثاني :

أريد أنه اذا كان الTextbox فارغا أن يتم اعتبار محتواه وكأنه يحتوي 0 حيث يتم تعتبر العمليات الحسابية محتواه = 0

وشكرا على الاهتمام

تم تعديل هذه المشاركة بواسطة OricalcosZy في 20 أغسطس 2010 في 17:44

Zefri Yahya - ArabTeam 2000

tpc7rzy94tx8iduak4b.png

#2

بالنسبة للمشكلة الاولى :

الذي فهمته منك هو التالي :

1- في البداية صندوق النص لا يقبل الا الارقام وعلامة " - " ،،

2 ادخل المستخدم ارقاما ثم ادخل " - " هنا يتحول صندوق النص الى قبول الارقام فقط ،،

3- ادخل المستخدم رقما معينا ( اعتبرته في المثال " 8 " ، بامكانك تغييره الى ما يناسبك ) يتحول صندوق النص الى قبول الارقام فقط ،،

اتمنى اكون فهمتك بشكل صحيح ،،

هذا هو المطلوب :

If TextBox1.Text.Contains("8") Then
            If Char.IsControl(e.KeyChar) = False And Char.IsDigit(e.KeyChar) = False Then
                e.Handled = True
            Else
                If e.KeyChar = "-" Then
                    e.Handled = True
                End If
            End If
        Else
            If TextBox1.Text.Contains("-") Then
                If e.KeyChar = "-" Then
                    e.Handled = True
                Else
                    If Char.IsControl(e.KeyChar) = False And Char.IsDigit(e.KeyChar) = False Then
                        e.Handled = True
                    End If
                End If
            End If
        End If

اعتذر عن طول الكود ، ربما بالامكان اختصاره بعض الشيء ولكنني كتبته مستعجلا happy.gif ،،

بالنسبة للمشكلة الثانية :

بامكانك استخدام Val ، والتي تعيد لك قيمة ما بداخل صندوق النص ،،

dim a as integer = val(textbox1.text)

بالتوفيق في مشروعك ،،

#3
ProFesOr-xP كتب:

بالنسبة للمشكلة الاولى :

الذي فهمته منك هو التالي :

1- في البداية صندوق النص لا يقبل الا الارقام وعلامة " - " ،،

2 ادخل المستخدم ارقاما ثم ادخل " - " هنا يتحول صندوق النص الى قبول الارقام فقط ،،

3- ادخل المستخدم رقما معينا ( اعتبرته في المثال " 8 " ، بامكانك تغييره الى ما يناسبك ) يتحول صندوق النص الى قبول الارقام فقط ،،

اتمنى اكون فهمتك بشكل صحيح ،،

هذا هو المطلوب :

If TextBox1.Text.Contains("8") Then         	If Char.IsControl(e.KeyChar) = False And Char.IsDigit(e.KeyChar) = False Then             	e.Handled = True         	Else             	If e.KeyChar = "-" Then                 	e.Handled = True             	End If         	End If     	Else         	If TextBox1.Text.Contains("-") Then             	If e.KeyChar = "-" Then                 	e.Handled = True             	Else                 	If Char.IsControl(e.KeyChar) = False And Char.IsDigit(e.KeyChar) = False Then                     	e.Handled = True                 	End If             	End If         	End If     	End If

اعتذر عن طول الكود ، ربما بالامكان اختصاره بعض الشيء ولكنني كتبته مستعجلا happy.gif ،،

بالنسبة للمشكلة الثانية :

بامكانك استخدام Val ، والتي تعيد لك قيمة ما بداخل صندوق النص ،،

dim a as integer = val(textbox1.text)

بالتوفيق في مشروعك ،،

بالنسبة للمشكل الأول فالرقم المقصود ليس 8 بل أي عدد كيفما كان

أما المشكل الثاني فقد حللته والحمد لله

بالتوفيق...

Zefri Yahya - ArabTeam 2000

tpc7rzy94tx8iduak4b.png

#4

اعرف انه ليس " 8 " ، قم بتعديله بما يناسبك happy.gif ،،

#5
ProFesOr-xP كتب:

اعرف انه ليس " 8 " ، قم بتعديله بما يناسبك happy.gif ،،

1.أريده أن يشمل جميع الاعداد التي ادخلها

2.هناك مشكل ثان وهو أنه في الحالة الثانية الكود الذي كتبت يسمح بادخال علامة - بعد الارقام

تم تعديل هذه المشاركة بواسطة OricalcosZy في 20 أغسطس 2010 في 21:32

Zefri Yahya - ArabTeam 2000

tpc7rzy94tx8iduak4b.png

#6
        If Not (Char.IsDigit(e.KeyChar) OrElse (TextBox1.TextLength = 0 And e.KeyChar = "-") OrElse Char.IsControl(e.KeyChar)) Then
            e.Handled = True
        End If

سبحان الله وبحمده ... سبحان الله العظيم

#7
المبرمج أحمد كتب:

        If Not (Char.IsDigit(e.KeyChar) OrElse (TextBox1.TextLength = 0 And e.KeyChar = "-") OrElse Char.IsControl(e.KeyChar)) Then
            e.Handled = True
        End If

شكرا جزيلا لك أخي الكريم على المساعدة

هلا أمكنك أن تشرح لي الكود قليلا وخصوصا دور عبارة OrElse لأنني أول مرة أستعملها ..وشكرا

Zefri Yahya - ArabTeam 2000

tpc7rzy94tx8iduak4b.png

#8

^

بعد اذن اخوي احمد ،،

عبارة OrElse تختلف عن عبارة Or بأنها اذا تحققت ان الطرف الاول True فبالتأكيد نتيجة الـ Or ستكون True ، فلا تقوم بالتأكد من الطرف الثاني لان الاول يكفي ، ممكن توفر عليك وقت كبير جدا في التطبيقات الكبيرة واللي يكون فيها مثلا بحث داخل قواعد البيانات ،،

نفس الكلام ينطبق على And و AndAlso ،،

1
#9
ProFesOr-xP كتب:

^

بعد اذن اخوي احمد ،،

عبارة OrElse تختلف عن عبارة Or بأنها اذا تحققت ان الطرف الاول True فبالتأكيد نتيجة الـ Or ستكون True ، فلا تقوم بالتأكد من الطرف الثاني لان الاول يكفي ، ممكن توفر عليك وقت كبير جدا في التطبيقات الكبيرة واللي يكون فيها مثلا بحث داخل قواعد البيانات ،،

نفس الكلام ينطبق على And و AndAlso ،،

من فضلك أخي

هل يمكن أن تعطيني مثالا توضيخيا فأنا لم أفهم قصدك جيدا blush.gif

Zefri Yahya - ArabTeam 2000

tpc7rzy94tx8iduak4b.png

#10

^

مثلا :

if 5>4 orElse 3<1 Then

هذا الشرط متى يتنفذ ؟ اذا كانت نتيجة الـ Or هي True ، فهنا الطرف الاول True و قاعدة الـ Or تقول :

T T T

T F T

F T T

F F F

اذن حسب القاعدة نلاحظ انه اذا كانت لدينا True واحدة فهي تكفي لنعرف ان نتيجة الـ Or هي True ، فلا يقوم الكمبيوتر بالتحقق من جملة ( 1>3 ) ، لانه سواءا كانت T أو F فالنتيجة النهائية للـ Or ستكون True ،،

هنا الجهاز وفر وقت القيام بعملية المقارنه الثانية لانه سواءا كانت T أو F فلا فائدة من معرفتها لان الجملة سوف تتنفذ لان نتيجة الـ Or هي True ،،

نفس الكلام ينطبق على And و AndAlso ،،

اتمنى يكون كلامي واضح ،،

#11
ProFesOr-xP كتب:

^

مثلا :

if 5>4 orElse 3<1 Then

هذا الشرط متى يتنفذ ؟ اذا كانت نتيجة الـ Or هي True ، فهنا الطرف الاول True و قاعدة الـ Or تقول :

T T T

T F T

F T T

F F F

اذن حسب القاعدة نلاحظ انه اذا كانت لدينا True واحدة فهي تكفي لنعرف ان نتيجة الـ Or هي True ، فلا يقوم الكمبيوتر بالتحقق من جملة ( 1>3 ) ، لانه سواءا كانت T أو F فالنتيجة النهائية للـ Or ستكون True ،،

هنا الجهاز وفر وقت القيام بعملية المقارنه الثانية لانه سواءا كانت T أو F فلا فائدة من معرفتها لان الجملة سوف تتنفذ لان نتيجة الـ Or هي True ،،

نفس الكلام ينطبق على And و AndAlso ،،

اتمنى يكون كلامي واضح ،،

شكرا لك أخي الكريم لقد فهمت

بالتوفيق ...

Zefri Yahya - ArabTeam 2000

tpc7rzy94tx8iduak4b.png

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