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

مشكل في Textboxes وخاصية المسح

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

السلام عليكم

لقد استخدمت هذا الكود لجعل التكستبوكس في برنامجي يقبل فقط الأرقام واشارة "-"

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

 Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
        If IsNumeric(e.KeyChar) = False And e.KeyChar <> "-" Then
            e.KeyChar = Nothing
        End If
    End Sub

Zefri Yahya - ArabTeam 2000

tpc7rzy94tx8iduak4b.png

#2

أضف

and e.KeyChar <> 8

إلى الشرط، لأن القيمة 8 هي التي تماثل Backspace.

تم تعديل هذه المشاركة بواسطة Xacker في 15 أغسطس 2010 في 01:16

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#3
Xacker كتب:

أضف

and e.KeyChar <> 8

إلى الشرط، لأن القيمة 8 هي التي تماثل Backspace.

لم يعمل الكود أخي

وهذه هي رسالة الخطأ

Operator "<>" is not defined for type 'char' and 'integer'

Zefri Yahya - ArabTeam 2000

tpc7rzy94tx8iduak4b.png

#4

استخدم المعامل != بدلاً من <>

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#5
Xacker كتب:

استخدم المعامل != بدلاً من <>

المعامل != خاص ب ++C على ما أظن وليس بالفيجوال بيسيك

على العموم جربته ولم يعمل ...

Zefri Yahya - ArabTeam 2000

tpc7rzy94tx8iduak4b.png

#6

أنت تستعمل VB.NET يعني الكثير من الأمور اختلفت عن VB 6 التقليدية ومن بينها المعاملات (إن شاء الله :happy:) لكن على ما يبدو لم تكن مشيئته كذلك وبقيت VB.NET تشبه VB6 في المعاملات أما C# فتشبه C++

بكل الأحوال مشكلتك ليست في الكود وإنما في المعامل المستخدم مع الأرقام، طيب إن لم يكن <> أو != فما هو المعامل الذي تقبله الست .NET :mad:

حيلة: جرب تغيير نمط القيمة 8 لتصبح Char ومن ثم جرّب مرة أخرى

رغم سخافة الموضوع.

تم تعديل هذه المشاركة بواسطة Xacker في 15 أغسطس 2010 في 02:14

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#7

بامكانك تجربة الحل هذا :

If Char.IsControl(e.KeyChar) Then
e.handled=Nothing
End If

بامكانك اضافته الى برنامجك وتجربته ،،

تم تعديل هذه المشاركة بواسطة ProFesOr-xP في 15 أغسطس 2010 في 04:13

#8

جرب تغيير الكود إلى الكود الآتى

    Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
        If Not Char.IsControl(e.KeyChar) AndAlso Not IsNumeric(e.KeyChar) AndAlso (e.KeyChar <> "-"c OrElse e.KeyChar = "-"c AndAlso TextBox1.Text.Contains("-"c)) Then
            e.Handled = True
        End If
    End Sub

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

feed.1.gif

#9
Xacker كتب:

أنت تستعمل VB.NET يعني الكثير من الأمور اختلفت عن VB 6 التقليدية ومن بينها المعاملات (إن شاء الله :happy:) لكن على ما يبدو لم تكن مشيئته كذلك وبقيت VB.NET تشبه VB6 في المعاملات أما C# فتشبه C++

بكل الأحوال مشكلتك ليست في الكود وإنما في المعامل المستخدم مع الأرقام، طيب إن لم يكن <> أو != فما هو المعامل الذي تقبله الست .NET :mad:

حيلة: جرب تغيير نمط القيمة 8 لتصبح Char ومن ثم جرّب مرة أخرى

رغم سخافة الموضوع.

جربت كل الطرق ولم تعمل ...

ٌاذا بدا الموضوع سخيفا لم فهو مهم بالنسبة لي...

ProFesOr-xP كتب:

بامكانك تجربة الحل هذا :

If Char.IsControl(e.KeyChar) Then
e.handled=Nothing
End If

بامكانك اضافته الى برنامجك وتجربته ،،

لقد أدخلت الكود أسفل الكودد الخاص بي في حدث keypress

الكود ليس به أي خطأ ولكنه لم يغير شيئا فقد بقي المشكل نفسه

Zefri Yahya - ArabTeam 2000

tpc7rzy94tx8iduak4b.png

#10

يا جماعة بحتن ووجدت أن رمز زر الحذف هو keys.back ولكني لم أعرف كيفية الاستخدام

Zefri Yahya - ArabTeam 2000

tpc7rzy94tx8iduak4b.png

#11
OricalcosZy كتب:

ٌاذا بدا الموضوع سخيفا لم فهو مهم بالنسبة لي...

قصدت المشكلة الخاصة بالمعامل وليس موضوعك لكنه سوء تعبير مني، عفواً.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#12
GHOST2010 كتب:

جرب تغيير الكود إلى الكود الآتى

    Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
        If Not Char.IsControl(e.KeyChar) AndAlso Not IsNumeric(e.KeyChar) AndAlso (e.KeyChar <> "-"c OrElse e.KeyChar = "-"c AndAlso TextBox1.Text.Contains("-"c)) Then
            e.Handled = True
        End If
    End Sub

شكرا جزيلا لك أخي الكريم ... لقد اشتغل

لمن هل يمكنك أن تشرحه لي فأنا لم أفهمه

Zefri Yahya - ArabTeam 2000

tpc7rzy94tx8iduak4b.png

#13
OricalcosZy كتب:

يا جماعة بحتن ووجدت أن رمز زر الحذف هو keys.back ولكني لم أعرف كيفية الاستخدام

Keys.Back يماثل القيمة 8

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If Char.IsNumber(e.KeyChar) = False And e.KeyChar <> CChar(ChrW(Keys.Back)) And e.KeyChar <> CChar(ChrW('-')) Then
        e.Handled = False
    Else
        e.Handled = True
    End If
End If
End Sub

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#14
Xacker كتب:

Keys.Back يماثل القيمة 8

هل يمكنك أن تشرح لي الكود التالي من فضلك أخي ؟

  If Not Char.IsControl(e.KeyChar) AndAlso Not IsNumeric(e.KeyChar) AndAlso (e.KeyChar <> "-"c OrElse e.KeyChar = "-"c AndAlso TextBox1.Text.Contains("-"c)) Then
            e.Handled = True
        End If

Zefri Yahya - ArabTeam 2000

tpc7rzy94tx8iduak4b.png

#15

سأجزأ الجملة إلى عدة شروط

Not Char.IsControl(e.KeyChar)

تعيد True إن كانت القيمة المدخلة عبارة عن حرف أو رقم أو رمز و False في حال كون القيمة عبارة عن محرف تحكم (محارف التحكم)

Not IsNumeric(e.KeyChar)

تعيد True إن كانت القيمة المدخلة عبارة عن حرف أو رمز أو محرف تحكم، و False في حال كون القيمة عبارة عن رقم.

e.KeyChar <> "-"c

تعيد True إن كانت القيمة المدخلة لا تساوي "-" (حرف c بعد "-" يؤدي إلى معالجة ما بين القوسين كـ Char وليس String وهو ضروري لاستخدام المعامل <> وهو يماثل استخدام CChar مع ChrW)

e.KeyChar = "-"c

تعيد True إن كانت القيمة المدخلة تساوي "-"

TextBox1.Text.Contains("-"c)

تعيد True إن كان الحقل النصّي TextBox1 يحتوي على الرمز "-"

(e.KeyChar <> "-"c OrElse e.KeyChar = "-"c AndAlso TextBox1.Text.Contains("-"c))

تعيد True إن كانت القيمة المدخلة تساوي "-" حصراً..

تلخيص ما سبق..

  If Not Char.IsControl(e.KeyChar) AndAlso Not IsNumeric(e.KeyChar) AndAlso (e.KeyChar <> "-"c OrElse e.KeyChar = "-"c AndAlso TextBox1.Text.Contains("-"c)) Then

تعيد True إن كانت القيمة المدخلة عبارة عن حرف أو رمز وكان هذا الرمز هو "-"

لذلك بصراحة أجد أن الكود يسمح بإدخال الحروف و "-" ويمنع الأرقام و Backspace التي كنت تبحث عنها أساساً فلا أدري كيف حلّت المشكلة!

إلا لو كنت أنا نعسان تاني :huh:

تم تعديل هذه المشاركة بواسطة Xacker في 15 أغسطس 2010 في 11:58

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#16
Xacker كتب:

سأجزأ الجملة إلى عدة شروط

Not Char.IsControl(e.KeyChar)

تعيد True إن كانت القيمة المدخلة عبارة عن حرف أو رقم أو رمز و False في حال كون القيمة عبارة عن محرف تحكم (محارف التحكم)

Not IsNumeric(e.KeyChar)

تعيد True إن كانت القيمة المدخلة عبارة عن حرف أو رمز أو محرف تحكم، و False في حال كون القيمة عبارة عن رقم.

e.KeyChar <> "-"c

تعيد True إن كانت القيمة المدخلة لا تساوي "-" (حرف c بعد "-" يؤدي إلى معالجة ما بين القوسين كـ Char وليس String وهو ضروري لاستخدام المعامل <> وهو يماثل استخدام CChar مع ChrW)

e.KeyChar = "-"c

تعيد True إن كانت القيمة المدخلة تساوي "-"

TextBox1.Text.Contains("-"c)

تعيد True إن كان الحقل النصّي TextBox1 يحتوي على الرمز "-"

(e.KeyChar <> "-"c OrElse e.KeyChar = "-"c AndAlso TextBox1.Text.Contains("-"c))

تعيد True إن كانت القيمة المدخلة تساوي "-" حصراً..

تلخيص ما سبق..

  If Not Char.IsControl(e.KeyChar) AndAlso Not IsNumeric(e.KeyChar) AndAlso (e.KeyChar <> "-"c OrElse e.KeyChar = "-"c AndAlso TextBox1.Text.Contains("-"c)) Then

تعيد True إن كانت القيمة المدخلة عبارة عن حرف أو رمز وكان هذا الرمز هو "-"

لذلك بصراحة أجد أن الكود يسمح بإدخال الحروف و "-" ويمنع الأرقام و Backspace التي كنت تبحث عنها أساساً فلا أدري كيف حلّت المشكلة!

إلا لو كنت أنا نعسان تاني :huh:

لم أفهم كثيرا بسبب أني ما زلت مبتدئا ولكن على العموم الكود يعمل

شكرا لك على المساعدة

ربما يستطيح الأخ الكريم صاحب الكود تفسيره لنا

Zefri Yahya - ArabTeam 2000

tpc7rzy94tx8iduak4b.png

#17

الكود عبارة عن 4 شروط

الشرط الأول

Not Char.IsControl(e.KeyChar)

يعنى أن الزر المضغوط ليس من مفاتيح التحكم أو أيا كان اسمها مثل Delete و Backspace

الشرط الثانى

AndAlso Not IsNumeric(e.KeyChar)

يعنى أن قيمة المفتاح ليست قيمة رقمية

الشرط الثالث

AndAlso (e.KeyChar <> "-"c OrElse e.KeyChar = "-"c AndAlso TextBox1.Text.Contains("-"c))

عبارة عن شرطين معا الشرط الأول يتأكد أن الرمز المضغوط ليس "-" والشرط الثانى يتأكد أن الرمز المضغوط "-" لكن النص لا يحتوى على هذا الرمز حتى لا يتم إدخال الرمز "-" أكثر من مرة

إذاً معنى الجملة "إذا كان الزر المضغوط ليس من مفاتيح التحكم وقيمته ليست قيمة رقمية وأيضا الرمز ليس رمز الطرح أو هو رمز الطرح لكن تم إدخال هذا الرمز سابقا قم بتجاهل المفتاح"

أتمنى أن تكون واضحة الآن :unsure:

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

feed.1.gif

#18

شكرا أخي لقد اتضح المعنى ...

Zefri Yahya - ArabTeam 2000

tpc7rzy94tx8iduak4b.png

#19

بصراحة يا GHOST ما زلت لا أدري كيف يؤدي الكود الغرض الذي طلبه صاحب الموضوع كونه كان يطلب إمكانية إدخال أرقام و "-" و Backspace والكود الذي وضعته حسبما فهمته يسمح بالحروف و "-" فقط.

هل أنا خرفت أم أنت ؟ بصراحة يعني كده :P

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#20
اقتباس
والكود الذي وضعته حسبما فهمته يسمح بالحروف و "-" فقط.

الكود الذى وضعته يسمح بالأرقام و "-" فقط :mad:

X ,, انت عايز ضرب الناااااااااااار post-52996-1243599597.gifpost-52996-1243599597.gifpost-52996-1243599597.gif

1

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

feed.1.gif

#21
GHOST2010 كتب:

الكود الذى وضعته يسمح بالأرقام و "-" فقط :mad:

X ,, انت عايز ضرب الناااااااااااار post-52996-1243599597.gifpost-52996-1243599597.gifpost-52996-1243599597.gif

هدوء يا جماعة ... ما بالكم تريدون اشعال الحرب ؟

على فكرة أخي

هل أنت متصل الان في msn او yahoo ؟

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

Zefri Yahya - ArabTeam 2000

tpc7rzy94tx8iduak4b.png

#22

يا مهدي بالراحة وخفف من اللعب بالقنابل والمتفجرات شوية لحسن تلاقي نفسك في كل مكان :P

بالراحة وحبة حبة عليّا يا علام

AndAlso Not IsNumeric(e.KeyChar)

ألا يقوم هذا بفحص القيمة فيما لو كانت رقمية ومن ثم ينفي الشرط أي أنه يقوم بإلغاء الأرقام

مثال تم إدخال الرقم 5

IsNumeric(5) = TRUE

Not IsNumeric(5) = FALSE

يا دي الدود نت اللي عندكو يا مهدي ده يطلع ايه ده ؟ :wacko:

بالمناسبة الراجل عاوز يسمح بـ Backspace كمان :wink:

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#23
Xacker كتب:

يا مهدي بالراحة وخفف من اللعب بالقنابل والمتفجرات شوية لحسن تلاقي نفسك في كل مكان :P

بالراحة وحبة حبة عليّا يا علام

AndAlso Not IsNumeric(e.KeyChar)

ألا يقوم هذا بفحص القيمة فيما لو كانت رقمية ومن ثم ينفي الشرط أي أنه يقوم بإلغاء الأرقام

مثال تم إدخال الرقم 5

IsNumeric(5) = TRUE

Not IsNumeric(5) = FALSE

يا دي الدود نت اللي عندكو يا مهدي ده يطلع ايه ده ؟ :wacko:

بالمناسبة الراجل عاوز يسمح بـ Backspace كمان :wink:

المهم أن الكود اشتغل والحمد لله :happy:

Zefri Yahya - ArabTeam 2000

tpc7rzy94tx8iduak4b.png

#24
OricalcosZy كتب:

المهم أن الكود اشتغل والحمد لله :happy:

هناك ما هو أهم، أن تعرف كيف يعمل.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#25

ايوه ياX ياحبيبى ,, السطر اللى داخل الشرط هو اللى هيزيل عندك اللبس

e.Handled = True

يعنى الغى تأثير الزر المضغوط

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

X ,, لو عايز حاجة تانية اطلع لى بره :mad:

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

feed.1.gif

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