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
9 févr. 2009 à 16:06
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
2 juil. 2007 à 14:56
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 ?
27 mars 2007 à 12:35
Du genre, tu fais double.Parse(tatextbox.text) et hop, c'est converti en double.
27 mars 2007 à 12:30
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,
4 févr. 2007 à 14:31
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.