تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] منع ادخال اكثر من مسافه بين الكلمات في التكست بوكس
#1
Exclamation 
السلام عليكم

اريد ان امنع المستخدم من ادخال اكثر من مسافه بين الكلمات في التكست بوكس

وشكرا لكم

اصدقائي حسب ترتيب ظهورهم في مواضيعي:
baha
ابراهيم ايبو
سعود
Rabeea Qbaha
اسامه الهرماوي
الرد
تم الشكر بواسطة:
#2
السلام عليكم اخي الكريم
تفضل هذا الكود 
كود :
   Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
       If TextBox1.Text = TextBox1.Text.Trim & (Space(2)) Then ' اذا كان النص مع القص زائد فراغين
           TextBox1.Text = TextBox1.Text.Trim & (Space(1)) ' قص النص وضع له فراغ واحد
           TextBox1.Select(TextBox1.TextLength, 0) ' أختر طول النص كله ولمسافة صفر
           TextBox1.Focus()
       End If

   End Sub

الرد
تم الشكر بواسطة: asemshahen5 , ابو روضة , baha , سعود , سميـر , viv , viv
#3
جزاك الله خير اخي ابراهيم ايبو

الكود جيد ولكن فيه مشكله لو تم نقل المؤشر بين الكلمات سواء بالماوس او الاسهم فبامكان المستخدم وضع اكثر من مسافه.

اشكر جدا اخي ابراهيم ايبو على الاهتمام والمساعده

اصدقائي حسب ترتيب ظهورهم في مواضيعي:
baha
ابراهيم ايبو
سعود
Rabeea Qbaha
اسامه الهرماوي
الرد
تم الشكر بواسطة: ابراهيم ايبو , asemshahen5
#4
السلام عليكم اخي الكريم سمير
لايحضرني كبف حل مشكلة وضع المؤشر بين كلمتين واضافة اكثر من فراغ ومنع ذلك
ولكن اليك حل اسعافي يستفاد منه .. يمكن عمل مصفوفة من كلمات النص بدلالة الفراغ
 ثم اعادة الكلمات مرة اخرى الى النص مع اضافة فراغ واحد بعد كل كلمة وسأترك مهمة كتابة الكود لك  لتكتسب خبرة
دمت بخير
علمني كيف اصطاد ولاتعطيني سمكة
الرد
تم الشكر بواسطة: سميـر , ابو روضة , ابو روضة , viv
#5
مجرد مشاركة استاذ كبير ومحترم مثلك يكفيني شرفا

اشكرك جدا اخي ابراهيم ايبو

اصدقائي حسب ترتيب ظهورهم في مواضيعي:
baha
ابراهيم ايبو
سعود
Rabeea Qbaha
اسامه الهرماوي
الرد
#6
كما قال الاخ ابرهيم او استخدم الطريقة التالية

كود :
Dim F As String
       For Each s As String In TextBox1.Text.Split(" ")
           If s <> "" Then
               F &= s & " "
           End If
       Next
       TextBox2.Text = F

ارى ان تترك المستخدم يدخل ما يريد وعند الحفظ تقوم بازالة الفراغات الزائدة جرب ضع اداتين تكست وزر اكتب في الكود
اعتقد سوف يعمل معك جيدا
الرد
#7
لا كبير الا الله الغفور الرحيم 
اشكرك اخي على اطرائك وثنائك فنحن مثلك نتعلم كل يوم
نخطئ كثبرا ونصيب قليلا
الرد
تم الشكر بواسطة: سميـر , عبد العزيز البسكري , asemshahen5
#8
الكود الصحيح والمناسب لهذا الامر هو الكود التالى
حيث عندما يتواجد المسافى اكثر من مسافة واحدة سيتم تحولها الى مسافة واحدة
اينما تقع المسافة بالجملة

استخدم الكود التالى فى حدث التنفيذ بعد انهاء المستخدم كم الكتابة
PHP كود :
TextSpaceToOne:
 
       TextBox1.Text TextBox1.Text.Replace(Space(2), Space(1))
 
       If (TextBox1.Text.Contains(Space(2))) Then GoTo TextSpaceToOne 
الرد
تم الشكر بواسطة: سميـر , عبد العزيز البسكري , asemshahen5
#9
استفدت من مشاركة استاذي اخي ابراهيم ايبو بكلمات جديدة لم أكن أعرفها من قبل وهي
Sapce
TextLength
Select
واخيرا اسلوبه في ترتيب الكود ووضع الشرح لكل سطر
والتي سيكون لها أثر في اسلوب كتابتي للكود مستقبلا

واستفدت من مشاركة اخي vip فكرة ترك المستخدم يكتب ما يشاء ثم عند الانتهاء يتم حذف المسافات الزائدة بين الكلمات
وقد شاركه بنفس المفهوم الاخ kiki مشكورا

استاذي العزيز ابراهيم ايبو ردك الاخير يدل على تواضعك فجزاك الله خيرا


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

يتم وضع سطر الكود هذا في الحدث losefocus للتكست بوكس
sender.Text=System.Text.RegularExpressions.Regex.Replace(sender.Text,"\s+",space(1)).Trim

واشكركم جزيل الشكر

اصدقائي حسب ترتيب ظهورهم في مواضيعي:
baha
ابراهيم ايبو
سعود
Rabeea Qbaha
اسامه الهرماوي
الرد
تم الشكر بواسطة: asemshahen5 , asemshahen5
#10
الحمد لله والشكر لله
ولهذا المنتدى الرائع
الرد
تم الشكر بواسطة: asemshahen5 , سميـر



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم