Comment creer une zone de texte qui n'accepte que les nombres ?

Comment creer une zone de texte qui n’accepte que les nombres ?


Source : Stack Overflow [.net]

Deux options :

Utilisez un NumericUpDown a la place. NumericUpDown effectue le filtrage pour vous, ce qui est pratique. Bien entendu, il donne egalement a vos utilisateurs la possibilite d’appuyer sur les fleches haut et bas du clavier pour incrementer et decrementer la valeur actuelle.

Gerez les evenements clavier appropries pour empecher toute saisie non numerique. Nous avons eu du succes avec ces deux gestionnaires d’evenements sur un TextBox standard :

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) &&
        (e.KeyChar != '.'))
    {
            e.Handled = true;
    }

    // only allow one decimal point
    if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1))
    {
        e.Handled = true;
    }
}

Vous pouvez supprimer la verification de '.' (et la verification subsequente de plus d’un '.') si votre TextBox ne doit pas autoriser les decimales. Vous pourriez egalement ajouter une verification de '-' si votre TextBox doit autoriser les valeurs negatives.

Si vous souhaitez limiter l’utilisateur en nombre de chiffres, utilisez : textBox1.MaxLength = 2; // this will allow the user to enter only 2 digits