اخفاء مربع نص للأرقام فحسب، بل لن يقبل مسافة للخلف

StackOverflow https://stackoverflow.com/questions/1060821

  •  21-08-2019
  •  | 
  •  

سؤال

ولدي النص الذي أود لأرقام فقط. ولكن لو ضرب عددا خاطئا، وأنا غير قادر على مسافة للخلف لتصحيح ذلك. كيف يمكنني تسمح أزرار لإعادة الكتابة للعمل. بفضل

    private void amount_PaidTextBox_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (Char.IsNumber(e.KeyChar) != true)
        {
            e.Handled = true;
        }
    }
هل كانت مفيدة؟

المحلول

هل يمكن إضافة الاختيار للسماح أحرف التحكم أيضا:

if (Char.IsControl(e.KeyChar) != true && Char.IsNumber(e.KeyChar) != true)
{
    e.Handled = true;
}

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

if (!Char.IsControl(e.KeyChar) && !Char.IsNumber(e.KeyChar))
{
    e.Handled = true;
}

نصائح أخرى

والإجابة الصحيحة هي:

private void amount_PaidTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
    e.Handled = !сhar.IsNumber(e.KeyChar) && (e.KeyChar != '\b');
}

ويمكنك أيضا تجاوز TextChanged الحدث:

private void textBox1_TextChanged(object sender, EventArgs e)
{
    string text = (sender as TextBox).Text;

    StringBuilder builder = new StringBuilder(String.Empty);

    foreach (char character in text)
    {
        if (Char.IsDigit(character))
        {
            builder.Append(character);
        }
    }

    (sender as TextBox).Text = builder.ToString();
}

تجدر الإشارة إلى أن عملتم لإضافة في التعليمات البرمجية لتعيين موضع الإقحام.

private void amount_PaidTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
     if (!Char.IsNumber(e.KeyChar) && e.KeyCode != Keys.Back)
          e.Handled = True;
}

وصيغة أنظف قليلا ما سبق:

 private void amount_PaidTextBox_KeyPress(object sender, KeyPressEventArgs e)
 {
   e.Handled = !(Char.IsNumber(e.KeyChar) || (e.KeyChar==Keys.Back));
 }

ولقد وجدت ما يلي عملت بشكل جيد. وشملت استثناءات إضافية للسماح مسافة للخلف، مفاتيح الأسهم حذف الرئيسية الخ كيفية السماح فقط رقمية (0-9) في inputbox HTML باستخدام مسج؟

private void txt_KeyPress(object sender, KeyPressEventArgs e)
{
    if (Char.IsDigit(e.KeyChar) || e.KeyChar == '\b')
    {
        // Allow Digits and BackSpace char
    }        
    else
    {
        e.Handled = true;
    }
}

وراجع رابط أيضا: إخفاء مربع نص لقبول فقط العشرية العشرية / 12209854 # 12209854

ويمكنك استخدام ما يلي على مفتاح الحدث الصحافة:

      private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (!Char.IsDigit(e.KeyChar) & (e.KeyChar != 8)) e.Handled = true; 
    }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top