N'avoir que des nombres dans une textbox - Partage d'une solution
La problématique s'étant posée pour moi et après avoir été fouiné un peu partout, voici la solution que j'ai implantée et que je partage avec vous.
Elle gère le point (nombre décimale). J'ai pas testé avec une virgule (mes PC ne sont pas configurés en mode "virgule").
Elle gère le copier/coller, le retour en arrière et l'espace vide.
Ne gère pas la notation scientifique (1e10 par exemple)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
Private Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
'dès que je change le text par entrée manuelle ou copier/coller
TextBox1.Text = verif_nombre(TextBox1.Text) 'appelle la fonction de vérification qui renvoie un text compatible
End Sub
Module Module1
Public Function verif_nombre(ByVal text As String)
Dim text_vérifié As String = ""
Dim l As Integer = text.Length 'récupère la longueur du texte pour traiter le cas ""
If l = 0 Then Return text_vérifié ' si le texte est "" ne change rien
If IsNumeric(text) Then
text_vérifié = text 'si le texte est numérique , cela inclut les décimales, ne change rien
Else 'si le texte n'est pas numérique
MsgBox("attention vous ne pouvez entrer que des nombres") 'prévient l'utilisateur
text = text.Remove(l - 1) 'supprime le dernier caractère entré, généralement celui qui pose problème
text_vérifié = text
End If
Return text_vérifié 'renvoie le texte corrigé et conforme
End Function
End Module |
Voilà, si ça peut aider certains
(testé sur Microsoft Visual Basic*2010 express, Windows 7 , 32 et 64 bit)