Frage

Ich habe eine Textbox, die ich für nur Zahlen möchte. Aber wenn ich die falsche Nummer getroffen, kippe ich Backspace es zu korrigieren. Wie kann ich erlaube Rückschritte zu arbeiten. Dank

    private void amount_PaidTextBox_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (Char.IsNumber(e.KeyChar) != true)
        {
            e.Handled = true;
        }
    }
War es hilfreich?

Lösung

Sie können einen Scheck in den Steuerzeichen erlauben auch:

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

Update: als Reaktion auf Person-b Kommentar auf dem Code s / er schlägt vor, den folgenden Stil (was auch ist, wie ich dies persönlich schreiben):

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

Andere Tipps

Die richtige Antwort lautet:

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

Sie können auch das Textchanged-Ereignis außer Kraft setzen:

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();
}

Bitte beachten Sie, dass Sie in Code würde hinzufügen, um die Position der Einfügemarke zu setzen.

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

Ein etwas sauberes Format der oben:

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

Ich fand auch die folgenden gearbeitet. Es umfasste zusätzliche Ausnahmen für das Erlauben Backspace, Pfeiltasten Löschtaste usw. Wie nur erlauben, numerisch (0-9) in HTML inputbox mit jQuery?

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;
    }
}

Siehe auch Link: Masking Textbox nur Dezimalzahlen Dezimalstellen akzeptieren / 12209854 # 12209854

Sie können die folgenden auf Tastendruck-Ereignis verwenden:

      private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (!Char.IsDigit(e.KeyChar) & (e.KeyChar != 8)) e.Handled = true; 
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top