ضمان أن مربعات النص في تطبيق C# الخاص بك تقبل الإدخال العددي فقط أمر بالغ الأهمية لسلامة البيانات وتجربة مستخدم إيجابية. هذا يمنع الإدخالات غير الصالحة ويبسط معالجة البيانات. تتناول هذه المقالة ثلاث طرق فعالة لتحقيق هذا الهدف، كل منها يقدم مستويات مختلفة من المرونة والتعقيد.
جدول المحتويات
- التحقق من صحة الإدخال باستخدام KeyPressEventArgs
- استخدام التعبيرات النمطية للتحقق من الصحة المرن
- الاستفادة من عنصر التحكم NumericUpDown
التحقق من صحة الإدخال باستخدام KeyPressEventArgs
يوفر هذا النهج تحكمًا مباشرًا في المفاتيح المسموح بها داخل مربع النص. يتم التعامل مع حدث KeyPress
للتحقق مما إذا كان المفتاح المضغوط رقمًا (0-9) أو مفتاح مسافة للخلف.
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
// السماح فقط بالأرقام (0-9) ومسافة الخلف
if (!char.IsDigit(e.KeyChar) && e.KeyChar != (char)8)
{
e.Handled = true; // كتم الضغط على المفتاح
}
}
هذه الطريقة موجزة وفعالة للتحقق من صحة إدخال عدد صحيح بسيط. char.IsDigit(e.KeyChar)
يتحقق مما إذا كان المفتاح رقمًا، بينما e.KeyChar != (char)8
يسمح بمسافة الخلف للحذف. e.Handled = true
يمنع إدخال مفاتيح غير رقمية.
استخدام التعبيرات النمطية للتحقق من الصحة المرن
توفر التعبيرات النمطية حلاً قويًا وقابل للتكيف، مفيد بشكل خاص عند التعامل مع تنسيقات رقمية أكثر تعقيدًا (مثل: الكسور العشرية، الترميز العلمي). تحقق طريقة Regex.IsMatch()
مما إذا كان نص مربع النص يتوافق مع نمط رقمي محدد.
private void textBox2_TextChanged(object sender, EventArgs e)
{
// السماح فقط بالأرقام واختياريًا نقطة عشرية
string pattern = @"^[0-9]*(.[0-9]+)?$";
if (!Regex.IsMatch(textBox2.Text, pattern))
{
// استعادة القيمة الصالحة السابقة أو مسح مربع النص. معالجة الأخطاء أمر بالغ الأهمية هنا.
// لحل أكثر قوة، ضع في اعتبارك تتبع آخر قيمة صالحة.
textBox2.Text = textBox2.Text.Substring(0, textBox2.Text.Length - 1);
textBox2.SelectionStart = textBox2.Text.Length; // تعيين موضع المؤشر
}
}
النمط @"^[0-9]*(.[0-9]+)?$"
يقبل صفرًا أو أكثر من الأرقام ([0-9]*
)، متبوعًا اختياريًا بنقطة عشرية وواحد أو أكثر من الأرقام ((.[0-9]+)?
). ^
و $
يضمنان تطابق السلسلة بأكملها مع النمط. إذا لم يتطابق الإدخال، فسيتم إزالة آخر حرف؛ ضع في اعتبارك معالجة أخطاء أكثر تطوراً للتطبيقات الإنتاجية.
الاستفادة من عنصر التحكم NumericUpDown
يوفر عنصر التحكم NumericUpDown
المدمج حلاً سهل الاستخدام ومباشرًا للإدخال العددي. إنه يقيد الإدخال بشكل أساسي بالقيم العددية ويوفر ميزات مثل أزرار الزيادة/النقصان والتحقق من الصحة النطاق.
// إضافة عنصر تحكم NumericUpDown إلى نموذجك (مثل: numericUpDown1)
// تعيين الخصائص حسب الحاجة (الحد الأدنى، الحد الأقصى، المنازل العشرية وما إلى ذلك)
// الوصول إلى القيمة باستخدام numericUpDown1.Value
int numericValue = (int)numericUpDown1.Value;
هذا هو الخيار الأبسط إذا كانت احتياجاتك تتوافق مع إمكانياته. إنه يتعامل تلقائيًا مع التحقق من الصحة ويوفر واجهة مستخدم واضحة. ومع ذلك، قد لا يكون مناسبًا للسيناريوهات التي تتطلب التحقق من الصحة أو التنسيق المخصص للغاية.
تعتمد أفضل طريقة على متطلباتك المحددة. لإدخال عدد صحيح بسيط، KeyPressEventArgs
فعال. بالنسبة للتنسيقات المعقدة أو تجربة المستخدم المحسّنة، تكون التعبيرات النمطية أو NumericUpDown
أفضل. ضع دائمًا في الاعتبار معالجة الأخطاء وتجربة المستخدم.