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 / Exemple :
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.
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.