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

منع زر معين من الكتابة

بدأه اسلام حسن في 17 يوليو 2008 · 9 رد · 1,057 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

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

إذا مثلا لدي TextBox واريد منع المستخدم من استخدام زر المسافة فلا يقوم بعمل المسافات بين الكلمات

فما الكود المطلوب لذلك

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

تم تعديل هذه المشاركة بواسطة اسلام حسن في 17 يوليو 2008 في 08:08

#2
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
	if (e.KeyChar == ' ')
		e.Handled = true;
}

أو

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
	if (e.KeyChar == (char)32)
		e.Handled = true;
}

تم تعديل هذه المشاركة بواسطة نورا مجدى في 17 يوليو 2008 في 10:22

#3

جزاك الله خيرا وجعله في ميزان حسناتك

شكرا جزيلا

#4

نورا مجدي

شكرا على الطريقة

هل استخدم نفس الاسلوب لمنع كتابة احرف داخل آلة حاسبة ؟ سوف يكون الكود طويل جداً لان هناك حوالي 26 حرف انجليزي و 28 حرف عربي بالاضافة الى الرموز :(

#5

لاله الحاسبة

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
	if (char.IsNumber(e.KeyChar) == false && (e.KeyChar != '.' || textBox1.Text.Contains('.')))
		e.Handled = true;
}
#6

عندما استخدم الشرط الاول ( التعامل يتم مع ارقام integers ) وهو :

  1.  
  2.  
  3. if ( !char.IsNumber(e.keyChar )
  4. e.Handled = true;
  5.  
  6.  

فانه لا يمكن استخدام زر backspace بل فقط delete ، فهل هناك رمز او constant value معينة لزر backspace حتى استثنياه من الشرط لتعمل؟

#7
مجلـد جديـد كتب:
فهل هناك رمز او constant value معينة لزر backspace حتى استثنياه من الشرط لتعمل؟
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
	if (char.IsNumber(e.KeyChar) == false && e.KeyChar != 8 && (e.KeyChar != '.' || textBox1.Text.Contains('.')))
		e.Handled = true;
}
#8

السلام عليكم

كنت في وقت سابق قد بحثت كثيراً في هذا الموضوع وكان من ضمن ما صادفته كود الأخت نورا مجدى :

if (char.IsNumber(e.KeyChar) == false && e.KeyChar != 8 && (e.KeyChar != '.' || textBox1.Text.Contains(".")))
				e.Handled = true;

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

بعد أن نقوم بمعالجة هذه المشكلة ستظهر مشاكل أخرى من بينها على سبيل المثال إمكانية لصق أي محتوى من الحافظى إلى مربع النص وستضطر لزيادة الكود البرمجي لمنع ذلك :)

لذلك أنصح جميع الإخوة بالابتعاد عن ذلك في البرامج الفعلية واستخدام الكود التالي :

int t;

try
{
	   t = int.Parse(textBox1.Text);
}
catch
{
	   MessageBox.Show("يجب إدخال قيمة صحيحة", "خطأ");
	   return;
}

الآن لو أدخل المستخدم قيمة عشرية ( استخدم الفاصلة ) فإن البرنامج سيعترض برسالة خطأ .

وإن أردت تغيير نوع العدد فكل ما عليك تغيير تعريف المتغير :)

تحياتي

#9

اشكرك على الاضافة اخي hfsh

#10
double input = 0.0;
if(double.TryParse(textBox1.Text, out input) == false)
	MessageBox.Show("يجب إدخال قيمة صحيحة", "خطأ");

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
	switch(e.KeyChar) {
		case '0':
		case '1':
		case '2':
		case '3':
		case '4':
		case '5':
		case '6':
		case '7':
		case '8':
		case '9':
		case (char)8:
			e.Handled = false;
			break;
		case '.':
			if(textBox1.Text.Contains("."))
				e.Handled = true;
			break;
		case '-':
			if(textBox1.Text.Length > 0)
				e.Handled = true;
			break;

		default:
			e.Handled = true;
			break;
	}
}

تم تعديل هذه المشاركة بواسطة Moudey في 20 يوليو 2008 في 00:43

مواضيع متنوعة

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