VB.net empêcher saisie de caractères dans tbx

Résolu/Fermé
WarT Messages postés 67 Date d'inscription vendredi 14 août 2009 Statut Membre Dernière intervention 4 juin 2014 - 11 mai 2012 à 20:32
WarT Messages postés 67 Date d'inscription vendredi 14 août 2009 Statut Membre Dernière intervention 4 juin 2014 - 12 mai 2012 à 23:35
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
A voir également:

2 réponses

lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
12 mai 2012 à 15:25
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
WarT Messages postés 67 Date d'inscription vendredi 14 août 2009 Statut Membre Dernière intervention 4 juin 2014 16
12 mai 2012 à 23:35
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