Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

LIMITER LA SAISIE À CERTAINS CARACTÈRES/TOUCHES DANS UN TEXTBOX EN VB.NET


Information sur la source

Catégorie :VB.NET Source .NET ( DotNet ) Classé sous : limiter, saisie, textbox, numerique, touches Niveau : Débutant Date de création : 10/02/2003 Date de mise à jour : 03/04/2007 21:33:46 Vu : 15 194

Note :
10 / 10 - par 5 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note


Description

Voila, c'est encore une source assez simple, mais qui pourra surement depanner certains...
les methodes que j'utilisais en vb6 n'étant plus utilisables, j'ai du passer deux heures à faire des tests sur les evenements keydown et keypress, jusqu'a trouver que l'annulation se resumait à e.Handled = True dans un evenement keypress... :)

Je n'ai pas mis d'exemples pour TOUTS les Char.ISblabla que vb gere, mais avec ca je pense que vous pouvez en deduire ce qu'il reste...  
 

Source

  • Private Sub nombres_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles nombre.KeyPress
  • 'on accepte que les chiffres (e.KeyChar.IsDigit(e.KeyChar)), ainsi que la touche back (Asc(e.KeyChar) <> System.Windows.Forms.Keys.Back) , sinon on annule (e.Handled = True)
  • If Char.IsDigit(e.KeyChar) = False And Asc(e.KeyChar) <> System.Windows.Forms.Keys.Back Then e.Handled = True
  • End Sub
  • Private Sub lettres_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles lettre.KeyPress
  • 'on accepte que des lettres, ainsi que la touche back
  • If Char.IsLetter(e.KeyChar) = False And Asc(e.KeyChar) <> System.Windows.Forms.Keys.Back Then e.Handled = True
  • End Sub
  • Private Sub majuscules_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles majuscule.KeyPress
  • 'on accepte que des majuscules, ainsi que la touche back
  • If Char.IsUpper(e.KeyChar) = False And Asc(e.KeyChar) <> System.Windows.Forms.Keys.Back Then e.Handled = True
  • End Sub
  • Private Sub texte_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles texte.KeyPress
  • 'on accepte chiffre et lettres (IsLetterOrDigit), espaces (IsWhiteSpace) et ponctuation (IsPunctuation)
  • 'ce qu'ils considerent comme ponctuation comporte certains characteres speciaux, comme le % ou le @...
  • If Char.IsLetterOrDigit(e.KeyChar) = False And Char.IsWhiteSpace(e.KeyChar) = False And Char.IsPunctuation(e.KeyChar) = False Then e.Handled = True
  • End Sub
  • Private Sub decimaltxt_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles decimaltxt.KeyPress
  • 'petit exemple pratique :
  • 'on accepte chiffres et virgule, ainsi que la touche back. On remplace un eventuel point par une virgule, et on refuse la saisie d'une virgule en tant que premier caractere
  • 'remplacement du point par une virgule
  • If Asc(e.KeyChar) = 46 Then e.KeyChar = ","
  • 'si c'est une virgule et qu'il y en a déja une dans le textbox, ou qu'elle est tappé en premier caractère, on annule la saisie
  • If Asc(e.KeyChar) = 44 And (CType(sender, TextBox).Text.IndexOf(",") > 0 Or CType(sender, TextBox).Text = "") Then e.Handled = True
  • 'si le caractere n'est pas un chiffre, back ou une virgule, on annule
  • If Char.IsDigit(e.KeyChar) = False And Asc(e.KeyChar) <> System.Windows.Forms.Keys.Back And Asc(e.KeyChar) <> 44 Then e.Handled = True
  • End Sub
    Private Sub nombres_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles nombre.KeyPress
        'on accepte que les chiffres (e.KeyChar.IsDigit(e.KeyChar)), ainsi que la touche back (Asc(e.KeyChar) <> System.Windows.Forms.Keys.Back) , sinon on annule (e.Handled = True)
        If Char.IsDigit(e.KeyChar) = False And Asc(e.KeyChar) <> System.Windows.Forms.Keys.Back Then e.Handled = True
    End Sub

    Private Sub lettres_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles lettre.KeyPress
        'on accepte que des lettres, ainsi que la touche back
        If Char.IsLetter(e.KeyChar) = False And Asc(e.KeyChar) <> System.Windows.Forms.Keys.Back Then e.Handled = True
    End Sub

    Private Sub majuscules_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles majuscule.KeyPress
        'on accepte que des majuscules, ainsi que la touche back
        If Char.IsUpper(e.KeyChar) = False And Asc(e.KeyChar) <> System.Windows.Forms.Keys.Back Then e.Handled = True
    End Sub

    Private Sub texte_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles texte.KeyPress
        'on accepte chiffre et lettres (IsLetterOrDigit), espaces (IsWhiteSpace) et ponctuation (IsPunctuation)
        'ce qu'ils considerent comme ponctuation comporte certains characteres speciaux, comme le % ou le @...
        If Char.IsLetterOrDigit(e.KeyChar) = False And Char.IsWhiteSpace(e.KeyChar) = False And Char.IsPunctuation(e.KeyChar) = False Then e.Handled = True
    End Sub

    Private Sub decimaltxt_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles decimaltxt.KeyPress
        'petit exemple pratique :
        'on accepte chiffres et virgule, ainsi que la touche back. On remplace un eventuel point par une virgule, et on refuse la saisie d'une virgule en tant que premier caractere
        'remplacement du point par une virgule
        If Asc(e.KeyChar) = 46 Then e.KeyChar = ","
        'si c'est une virgule et qu'il y en a déja une dans le textbox, ou qu'elle est tappé en premier caractère, on annule la saisie
        If Asc(e.KeyChar) = 44 And (CType(sender, TextBox).Text.IndexOf(",") > 0 Or CType(sender, TextBox).Text = "") Then e.Handled = True
        'si le caractere n'est pas un chiffre, back ou une virgule, on annule
        If Char.IsDigit(e.KeyChar) = False And Asc(e.KeyChar) <> System.Windows.Forms.Keys.Back And Asc(e.KeyChar) <> 44 Then e.Handled = True
    End Sub

Conclusion

je sais que c 'est simple, mais en considérant que je me suis fait c**** à trouver comment faire, je me dis que ca pourra en aider d'autres.  
 

Historique

03 avril 2007 21:33:46 :
petit raffraichissement du code, mais même mise en page

Commentaires et avis

signaler à un administrateur
Commentaire de Falk le 13/04/2003 21:20:38

Vraiment Simpa ta source, dans le cadre de mon convertisseur  Euros j'avais "bidouillé en testant si ma valeur d'entrée était de type Numérique  (If Not IsNumeric(txtTaux.Text) Then...), ta solution semble plus fiable merci =)

signaler à un administrateur
Commentaire de LittleKeichi le 17/08/2003 10:31:04

Kler ke c simpa moi aussi je me suis fé c**** comme tu dis et pis finalement j'avais tjrs po de soluce. Donc un franc Merci s'impose :)
À la revoyure !

signaler à un administrateur
Commentaire de 666Ange le 19/08/2003 18:05:09

Merci pour le e.handled = true !!!

signaler à un administrateur
Commentaire de Benouille le 05/03/2007 15:19:33

pas mal le e.handled = true ...
faut que je teste ça!

par contre c'est louche ton " e.KeyChar.IsLetter(e.KeyChar) "
ça semble bizarre d'appeler une fonction avec lui même en parametre.

monobjet.mafonction (monobjet) ... chelou

je suppose que c'est une réminiscence de l'héritage ...



tite dernière question taquine, si on fait un copié collé dans ton textbox, s'passe quoi?


vb nouille, 4 ans plus tard

signaler à un administrateur
Commentaire de hvb le 06/03/2007 12:34:28

effectivement, e.KeyChar.IsLetter(e.KeyChar) est à remplacer par Char.IsLetter(e.KeyChar)
Le code date de 4 ans, j'apprenais la POO par tatonnement... ^^

Par contre pour ta "question taquine", effectivement, elle taquine... il faudrait penser à empecher le copier coller, qui peut tout faire exploser.
Je n'ai pas le temps de regarder tout de suite, mais on doit pouvoir ruser assez facilement.
Merci de tes remarques :)

signaler à un administrateur
Commentaire de avelone le 05/08/2007 20:03:24

Merci pour le code pour gérer que les chiffres et les virgules.

Très Bien

Merci

C'est excellent

signaler à un administrateur
Commentaire de arapahoo le 18/08/2007 11:13:23

Excellent et compact Merci  10

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

VBA Excel : Limiter la saisie sur plusieurs TextBox d'un UserForm [ par bibiledur ] Bonjour,Je suis un peu Novice.J'ai un formulaire sur lequel il y a une centaine de TextBox que j'aimerais limiter à l'insertion de nombres.Le problème limiter saisie d'un textbox [ par louly ] Bonjour,Je voudrai afin d'afficher dans une spreadsheet (VB6) avec taille de cellule fixé, limiter la saisie dans un textbox à la taille physique de c Limiter nombre de charactere saisie textbox via bouton [ par olobo ] Bonjour!Voila j'ai un petit soucis j'aimerais limiter la saisie dans une TextBox a 4 charatère la commande est donc  TxtBox.MaxLength = 4 Cependant ce Controler l'entrée des décimals dans un textbox en vb 2008 express [ par fadan ] Bonjour le forum.Je viens de découvrir, VB 2008 express.Et étant débutant en programation, je cale sur le contrôle de saisies dans un textBox.En effet verifier la saisie numerique dans un textbox [ par freeman151248 ] bonjour,j ai lu pas mal de chose sur le sujet et je n'est pas bien compris quelle était la meilleur méthode pour verifier que la saisie d'un textbox e pb avec Textbox [ par ngalino ] bonjour,j'ai un formulaire sur vb auquel j'ai associé plusieurs contrôles notamment les zones de saisie (textbox). mais je suis confronté à une diffic associer affichage listbox avec saisie dans textbox => possible ? [ par Tyrell2 ] bonjour,mon défis du jour : j'ai une listbox dans laquelle j'affiche la liste des ordinateurs du domaine (presque un millier quand meme)et j'ai aussi forcer la saisie dans un textbox d'une manière particulière [ par nasilo ] Bonjour,Je débute et j'ai crée un userform me permettant de remplir une base de données sous excel. Comment faire pour "obliger" la saisie dans un tex Inserer la fonction de recherche dans une textbox + saisie semi automatique des mots entrés ds la textbox. [ par arnaud95000 ] Bonjour, afin de finaliser un projet et de le rendre agrèable à l'utlisateur, j'aimerai faire une textbox qui permette d'une part de selectionner les Masque de Saisie HEURE [ par alias666 ] Bonjour à tous !Après une recherche assez floue sur le site Code Source et MSDN, je décide de me tourner vers vous. J'ai une saisie à faire dans un te


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,343 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.