VB.net empêcher saisie de caractères dans tbx [Résolu/Fermé]

Signaler
Messages postés
67
Date d'inscription
vendredi 14 août 2009
Statut
Membre
Dernière intervention
4 juin 2014
-
Messages postés
67
Date d'inscription
vendredi 14 août 2009
Statut
Membre
Dernière intervention
4 juin 2014
-
Bonjour,

Sur un programme, je souhaite effectuer des contrôles de saisie sur des textbox, afin que seul des caractères numériques, ou alphabétiques puissent y être tapé.

J'ai trouvé cette solution qui marche plutôt bien :
    Private Sub tbx_annee_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles tbx_annee.KeyPress
        If IsNumeric(e.KeyChar) Then
            e.Handled = False
        Else
            e.Handled = True
        End If
    End Sub


Cela marche car seul des chiffres peuvent être entré dans la textbox , mais la "backspace" ne fonctionne pas, le seul moyen de supprimer les données reste la touche "suppr".

Je trouve cela plutôt gênant, c'est pourquoi je voulais savoir si l'un d'entre vous avait une solution à ce problème.

Merci d'avance =)

WarT

2 réponses

Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 104
Bonjour,
On peu tester le code mais apparement il y a un bug dans VB, quand ont tape 1 à partir du clavier numérique le code renvoyer est celui de la lettre "a"
Pour contourner le problème...
    Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
        Dim C As String = Chr(e.KeyValue)
        Dim B As String = Chr(e.KeyCode - 48)
        If Not (IsNumeric(C) Or IsNumeric(B)) Then
            e.SuppressKeyPress = True
            Beep()
        End If
    End Sub

Avec ça pas besoin du retour arrière (en français c'est mieux)
A+
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60872 internautes nous ont dit merci ce mois-ci

Messages postés
67
Date d'inscription
vendredi 14 août 2009
Statut
Membre
Dernière intervention
4 juin 2014
16
J'ai trouvé cette solution sinon :
    Private Sub tbx_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles tbx.KeyPress
        If Char.IsDigit(e.KeyChar) = False And Asc(e.KeyChar) <> System.Windows.Forms.Keys.Back Then e.Handled = True
    End Sub


Merci de l'aide =)
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60872 internautes nous ont dit merci ce mois-ci