Textbox numérique

Soyez le premier à donner votre avis sur cette source.

Snippet vu 44 039 fois - Téléchargée 28 fois

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

Ajouter un commentaire

Commentaires

stringfelow
Messages postés
1
Date d'inscription
mercredi 4 février 2009
Statut
Membre
Dernière intervention
9 février 2009

bonjour,

ton code est très bien, ça fait un moment que je galère. (je debute)
je voulais savoir comment faire pour la même chose mais sur une textbox en particulier
babe59
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 novembre 2015

Bonjour,

Merci pour ce bout de code, il va m'être tres utile. Y aurait il un moyen de vérifier que la valeur saisie ne dépasse pas les min/max ?
cs_yoannd
Messages postés
305
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
10 août 2011
3
De mémoire, il me semble que la méthode double.Parse peut t'aider.
Du genre, tu fais double.Parse(tatextbox.text) et hop, c'est converti en double.
tounissan
Messages postés
4
Date d'inscription
mardi 12 octobre 2004
Statut
Membre
Dernière intervention
27 mars 2007

Bonjour ,
Je suis un débutant avec c#, et je voulais faire un simple petit programme, dont le but et de savoir un peu sur les textbox : en fait je voulais faire la somme de deux "doubles" a et b, en utilisant deux textbox (1 pour a et l'autre pour b) et afficher le resultat dans un troisiemme texbox,
Le probleme est ke pour VB pour faire la sommedes valeurs des textbox , il suffit de faire ; val(text1.text)+val(text2.val) mais pour le c# , je ne sais pas comment faire. Merci de vouloir me repondre,
Seth77
Messages postés
567
Date d'inscription
mardi 30 avril 2002
Statut
Membre
Dernière intervention
24 janvier 2014

Ca marche "moyen" tout de meme ... j'ai compile ... et fais "Choisir les elements" et le composant est bien dans la liste et coche ... et pourtant il n'apparait pas !!!!

Alors j'ai decocher ... et fais "Choisir les elements"/"Parcourir" et j'ai selectionne l'exe genere et la ca marche !

bizarre !

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.