Textbox numérique

Contenu du snippet

Comme cette question revient sans cesse dans le forum, voici comment créer une textbox n'acceptant que des caractères numériques
Ce code est vraiment très simple. Il consiste a "gérer" les entrées clavier dans l'évenement OnKeyPress.

Source / Exemple :


using System;
using System.Drawing;
using System.Windows.Forms;

[ToolboxBitmap(typeof(TextBox))] // Pour avoir un bel icone de Textbox dans la toolbox
public class NumericBox : TextBox
{
	public NumericBox()
	{
	}

	//* Désactiver les 6 lignes suivantes pour permettre le copier / coller */
	private const int WM_PASTE = 0x0302;
	protected override void WndProc(ref System.Windows.Forms.Message m)
	{
		if (m.Msg != WM_PASTE)
			base.WndProc(ref m);
	}

	protected override void OnKeyPress(KeyPressEventArgs e)
	{
		// Si la caractère tapé est numérique
		if (char.IsNumber(e.KeyChar))
		{
			if (e.KeyChar == '²') e.Handled = true; // Si c'est un '²', on gère l'evenement.
			else e.Handled = false; // Sinon, on laisse passer le caractère (On peut omettre cette ligne)
		}
		// Si le caractère tapé est un caractère de "controle" (Enter, backspace, ...), on laisse passer
		else if (char.IsControl(e.KeyChar)) e.Handled = false;
		// Et sinon, on gère toutes les autres touches tapées, et on en fait rien
		else e.Handled = true; 
	}
}

Conclusion :


Le collage dans la textbox est à éviter, sinon il serait possible de coller des caractères non numeriques dedans.
Merci a coq qui avait indiqué dans le forum le bout de code qui permet de le désactiver

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.