Domanda

ho una casella di testo che vorrei solo per i numeri. Ma se mi ha colpito il numero sbagliato, non posso backspace per correggerlo. Come posso permettere backspace di lavorare. Grazie

    private void amount_PaidTextBox_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (Char.IsNumber(e.KeyChar) != true)
        {
            e.Handled = true;
        }
    }
È stato utile?

Soluzione

Si potrebbe aggiungere un controllo per consentire i caratteri di controllo così:

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

Aggiornamento: in risposta al commento della persona-b sul codice s / egli suggerisce il seguente stile (che è anche il modo Io personalmente scrivere questo):

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

Altri suggerimenti

risposta corretta è:

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

È anche possibile ignorare il TextChanged-evento:

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

Si prega di notare che si dovrà aggiungere il codice per impostare la posizione del cursore.

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

Un formato leggermente più pulito di quanto sopra:

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

Ho trovato il seguente funzionato bene. E 'incluso eccezioni in più per permettere backspace, tasti freccia eliminare la chiave ecc Come per consentire solo numerica (0-9) in inputbox HTML utilizzando 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;
    }
}

vedi link anche: mascheramento Casella di testo per accettare solo i decimali decimali / 12.209.854 # 12209854

È possibile utilizzare il seguente sulla stampa evento chiave:

      private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (!Char.IsDigit(e.KeyChar) & (e.KeyChar != 8)) e.Handled = true; 
    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top