Controle de saisie textbox sous visual studio express 2005

Soyez le premier à donner votre avis sur cette source.

Snippet vu 23 923 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

manouwx
Messages postés
1
Date d'inscription
mercredi 6 décembre 2006
Statut
Membre
Dernière intervention
23 août 2011
-
MAIS IL Y A UN PROBLEME QUI N'EST CONTROLER MES CHERE AMIS LE CAS DE LA VIRGULE ELLE N'EST PAS CONTROLER ON PEUT SAISIR PLUSIEUR FOIS LA VIRGULE MALHEUREUSEMENT CONTOLER C
vavay
Messages postés
1
Date d'inscription
mercredi 11 mai 2011
Statut
Membre
Dernière intervention
14 juin 2011
-
merci bcp thomeux
Thomeux
Messages postés
58
Date d'inscription
mercredi 15 mars 2006
Statut
Membre
Dernière intervention
14 janvier 2010
-
De rien çà sert à cela l'entraide
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 !
LunaPurple
Messages postés
19
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)...

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.