IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Interdire CERTAINS chiffres dans MaskedTextbox


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 91
    Par défaut Interdire CERTAINS chiffres dans MaskedTextbox
    Bonjour,
    Me revoilà encore des questions sur la manipulation d'heures.
    J'ai maintenant - grâce à vous - trouvé comment obliger l'utilisateur à saisir dans deux textbox deux heures au format hh:mm:ss. Grâce au masque de saisie : "00:00:00" de mes deux MaskedTextbox.
    Je souhaite aller plus loin, en interdisant à l'utilisateur les chiffres 7,8,9 pour les dizaines de minutes et les dizaines de secondes, et interdire les chiffres 3 à 9 pour les dizaines d'heures.
    En clair, comme mes deux MaskedTextbox sont soustraites, si l'utilisateur saisit pas erreur "15:65:05", le programme plante !
    Comment éviter cela ?

    J'ai tenté d'utiliser la fonction format :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Format (MaskedTextbox1.text,"##:6#:##") then
    Message d'erreur
    End if
    Je rencontre un problème de conversion de la chaîne.
    Ou alors, il faudrait que le programme convertisse lui-même "15:65:05" en "16:05:05", mais cela me semble un peu compliqué !

    Merci de m'aider encore et toujours

  2. #2
    Membre expérimenté
    Homme Profil pro
    Freelance
    Inscrit en
    Février 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 312
    Par défaut
    il faudrait que le programme convertisse lui-même "15:65:05" en "16:05:05", mais cela me semble un peu compliqué !
    pas tant que ca!
    tu récupère l'heure, les secondes et les minutes que tu stocke dans 3 variables de type entier différentes heure minute et seconde
    si secondes>=60
    secondes =seconde-60
    minutes=minutes+1
    fin si
    si minutes>=60
    minutes=minutes-60
    heure=heure+1
    fin si
    si heure >=24
    heure=heure-24
    fin si
    après tu redispatche les éventuels résultat différent sur tes textbox
    après si l'utilisateur tape 54854156465/518435465454/8451512
    la je ne voit pas trop comment tu peut faire

  3. #3
    Membre Expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Par défaut
    Desole, pas le temps de detailler, mais interesse toi a la propriete ValidatingType, ca devrait t'aider a ne valider que des heures.

  4. #4
    Membre expérimenté Avatar de Faladin
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2007
    Messages : 333
    Par défaut
    Tu pourrais aussi utiliser l'événement (je ne sais plus son nom) qui s'enclanche à chaque modification de ta text box et vérifier ce que l'utilisateur a entré afin de lui indiquer que le format n'est pas valide.

    Encore mieux, j'y pense, avant d'updater l'heure (tu dois avoir un bouton à cliquer qui fait une action après l'entrée manuelle) vérifie si le format est valide pour toi en vérifiant un peu comme le fait Bobby plus haut:

    pseudo:

    1. Split la string d'heure en 3 morceaux avec le ":" ou "h" ou peut importe comme délimiteur
    2. Scan la string (tableau de 3 parties maintenant) et vérifie la validité


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Si heure[1] > 24 then NONVALIDE
    Si heure[2] > 59 then NONVALIDE
    Si heure[3] > 59 then NONVALIDE
    Else VALIDE
    EDIT: Des fautes de frappes atroces...

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 91
    Par défaut
    Merci pour votre aide à tous.
    Je choisis la solution de Ohmonbato, car je ne peux extraire les minutes ou les secondes si elles ne sont pas valide (méthode Hour() ou Minute()), donc je ne peux pas les vérifier.

    J'utilise donc l'évènement TypeValidationCompleted.
    D'abord, je détermine le type de validation de mes deux MaskedTextBox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub MaForm ()
    MaskedTextbox1.ValidatingType=GetType(System.DateTime)
    MaskedTextbox2.ValidatingType=GetType(System.DateTime)
    End sub
    Ensuite je vérifie les données saisies par la méthode ValidateText :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub CalculDurée_Click()
    heure1 = MaskedTextbox1.ValidateText
    heure2 = MaskedTextbox2.ValideText"
    End sub
    Cette méthode déclenche l'évènement TypeValidationCompleted que j'ai défini de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub MaskedTextBox_TypeValidationCompleted()
    If (Not e.IsValidInput) Then
    MessageBox.Show("L'heure de début n'est pas au format hh:mm:ss !", "ATTENTION", MessageBoxButtons.OK)
    End if
    End sub
    Et voilà tout roule ! Encore merci

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 91
    Par défaut
    Il faut lire au lieu de !
    J'ai pas détaillé les calculs de durée qui ne sont pas l'objet de ce post mais si ça intéresse qq1, je les mettrais bien volontiers

  7. #7
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 91
    Par défaut
    Il faut lire "ValidateText" et non ValideText" !!

    Je n'ai pas détaillé les calculs de durée qui ne sont pas l'objet de ce post mais si ça intéresse qq1, je les mettrais bien volontiers

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 26/06/2014, 17h55
  2. Interdire certains caractères dans un champ
    Par sardaucar dans le forum VBA Access
    Réponses: 2
    Dernier message: 09/06/2014, 10h17
  3. Interdire la saisie de chiffres dans mon input text
    Par karibouxe dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 03/11/2011, 10h50
  4. [PHP 5.0] Interdire certains caractère dans un formulaire html
    Par Santcho dans le forum Langage
    Réponses: 3
    Dernier message: 20/07/2010, 16h15
  5. Réponses: 9
    Dernier message: 01/04/2009, 11h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo