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

Résolu
WarT Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   -  
WarT Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Contributeur Dernière intervention   1 191
 
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   Statut Membre Dernière intervention   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