Controle de saisie textbox sous visual studio express 2005

Soyez le premier à donner votre avis sur cette source.

Snippet vu 23 859 fois - Téléchargée 27 fois

Contenu du snippet

Ce code permet de controler le contenu de la textbox selon les choix:
que numerique(virgule ou pas, positif ou pas)
que caractère alphabetique
mixte des deux

Source / Exemple :


'A mettre dans le code de la form ou se trouve votre textbox  

  Private Sub TextBox1OnKeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
        Controle_saisie.Textbox_control(sender, e, True, True, False, False)
        '                                            |     |       |   |_ si True: Caractère alphabet autorisé
        '                                            |     |       |
        '                                            |     |       |_si True:Nombre positif uniquement
        '                                            |     |
        '                                            |     |_ si True: Nombre entier uniquement
        '                                            |
        '                                            |_si true: Nombre autorisé

    End Sub
'a mettre dans un module appelé "Controle_saisie"

    Public Sub Textbox_control(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs, ByVal Nombre As Boolean, ByVal Est_entier As Boolean, ByVal Est_positif As Boolean, ByVal Alphabet As Boolean)
        Select Case e.KeyChar
            Case "1" To "9"
                If Nombre = False Then e.Handled = True
            Case "a" To "z"
                If Alphabet = False Then e.Handled = True
            Case ".", ","
                If Est_entier = False Then
                    e.Handled = True
                Else
                    e.KeyChar = ","
                End If
            Case "-"
                If Est_positif = True Then
                    e.Handled = True
                Else
                    'enlever le moins précedent
                End If
            Case Else
                If (Char.IsControl(e.KeyChar)) Then
                    e.Handled = False
                Else
                    e.Handled = True
                End If
        End Select

    End Sub

A voir également

Ajouter un commentaire

Commentaires

Jean_Elens
Messages postés
53
Date d'inscription
dimanche 29 mai 2005
Statut
Membre
Dernière intervention
16 octobre 2006
-
Je commence en VB.NET et ne comprend pas bien ton bout de code... Probablement une confusion quelque part...Qu'est
Controle_saisie.Textbox_control ??
timotep
Messages postés
34
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
16 janvier 2008
-
Merci beaucoup pour ton code! Enfin un moyen simple de contrôler la saisie de caractères, que ce soit du numérique ou des caractères. Ca m'a bien servi, et ce code est simple à employer (je suis débutant en vb.net)
greg38bj
Messages postés
84
Date d'inscription
jeudi 11 mars 2004
Statut
Membre
Dernière intervention
17 novembre 2008
-
salut
tres bon code, j'y ai juste rajouté les majuscules:

Public Sub Textbox_control(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs, ByVal Nombre As Boolean, ByVal Est_entier As Boolean, ByVal Est_positif As Boolean, ByVal Alphabet As Boolean, ByVal Maj As Boolean)

Case "A" To "Z"If Maj False Then e.Handled True

et modifié les chiffres (le zéro peut être utile) :

Case "0" To "9"If Nombre False Then e.Handled True
LunaPurple
Messages postés
20
Date d'inscription
dimanche 15 avril 2007
Statut
Membre
Dernière intervention
20 octobre 2010
-
Salut,
Merci à Thomeux et Greg38BJ pour leurs codes qui m'ont beaucoup aidé.

Pour ceux qui préfèrent, le voici transformé en 'fonction', avec une petite correction au niveau du Case Entier (mettre à True au lieu de False pour interdir la saisie du point ou de la virgule).

Cette sub est à mettre dans le code du formulaire (en Private sub), ou bien dans un module (en Public Sub), selon l'utilisation que vous en ferez (dans un seul Form ou bien dans plusieurs).
Le fait de faire une Public Sub permet d'ajouter ce code dans un module déjà existant, et de ne pas avoir à créer un module Contrôle_Saisie spécifique (ce qui était mon cas, et je n'arrivais pas à récupérer le .Textbox_control de Controle_Saisie dans le code du KeyPress... Sûrement un truc que j'avais mal fait...? Mais avec la fonction, ça marche).

Voici la 'fonction' : (à mettre dans votre module ou le code du form)

Public Sub ControleSaisie(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs, ByVal Nombre As Boolean, ByVal Est_entier As Boolean, ByVal Est_positif As Boolean, ByVal Alphabet As Boolean, ByVal Maj As Boolean)
Select Case e.KeyChar
Case "0" To "9"
If Nombre False Then e.Handled True
'If CInt(sender) > 999 Then e.Handled = True
Case "a" To "z"
If Alphabet False Then e.Handled True
Case "A" To "Z"
If Maj False Then e.Handled True
Case ".", ","
If Est_entier = True Then
e.Handled = True
Else
e.KeyChar = ","
End If
Case "-"
If Est_positif = True Then
e.Handled = True
Else
'enlever le moins précedent
End If
Case Else
If (Char.IsControl(e.KeyChar)) Then
e.Handled = False
Else
e.Handled = True
End If
End Select
End Sub


Et voici le code appelant, dans l'event KeyPress du contrôle textbox dans lequel vous voulez contrôler la saisie.

Private Sub txtbx_ForfMontant_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtbx_ForfMontant.KeyPress
'contrôle que ce sont bien des Euros inférieurs à 999 € qui sont saisis dans le champ
ControleSaisie(sender, e, True, True, True, False, False)
Dim val As String
val = txtbx_ForfMontant.Text
If val <> "" And e.KeyChar <> Chr(8) Then
If Convert.ToInt16(val) > 99 Then MessageBox.Show("Etes-vous sûr du montant saisi ?")
End If
If e.KeyChar Chr(8) Then e.Handled False 'pour permettre la suppression des chiffres en trop ou la correction du nombre saisi
End Sub

Pour finir, je dis 'fonction", mais, comme elle ne renvoit pas directement de valeur, en fait, ce n'en est pas vraiment une... C'est pourquoi elle s'appelle Public Sub, et pas Public Function.

Vous l'aurez compris, ce code et ces explications s'adressent à des débutants (comme moi)...
Sebastius
Messages postés
1
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
13 janvier 2010
-
Après avoir chercher pas mal de temps, je suis ravi d'avoir pu trouver un code simple est fonctionnel pour visual studio 2008 !

Merci beaucoup de nous avoir fait partager ce code !

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.