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

C# Discussion :

Boucle infinie et focus sur un contrôle.


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Points : 52
    Points
    52
    Par défaut Boucle infinie et focus sur un contrôle.
    Bonjour à tous,

    j'essaie de valider des informations sur un code postal de Format : H3H 3H3. La validation se passe correctement sauf que, si le code postal n'est pas de bon format, le mécanisme de validation doit 1) Afficher un message d'erreur, 2) Sélectionner le texte dans le controle textbox, et 3) rendre le focus au textbox.

    Dans mon cas, il arrive que le focus ne se rende pas, ou que le focus et le messagebox arrive en conflit, ce qui m'emmene dans une boucle infernale... (ou infini... pour moi c'est la meme chose)

    voici donc mon code...

    pour ce qui est de l'évenement lostfocus.... la validation se fait à l'intérieur de la classe Client, et retourne 0 si tout va bien et 1 si ça ne va pas)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    privatevoid txtCodePostalClient_LostFocus(object sender, EventArgs e)
    {
    validerChamps(this.txtCodePostalClient, unClient.setCodePostal(this.txtCodePostalClient.Text));
    }
    
    et voici maintenant la méthode ValiderChamps... qui semble être la méthode problématique....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    privatevoid validerChamps(System.Windows.Forms.TextBox sender, int errorCode)
    {
    if (errorCode != 0)
    {
    if (MessageBox.Show("Erreur de format", "Erreur de format", MessageBoxButtons.OK) == System.Windows.Forms.DialogResult.OK)
    {
    sender.Select(0, sender.Text.Length);
    }
    sender.Focus();
    }
    }
    
    le sender.Focus() semble ne pas toujours fonctionner... surtout quand je change de fenetre par exemple pour aller sur le forum,... . ensuite j'entre dans la boucle infinie...

    Alors, des suggestions???


    Merci à tous d'avance

  2. #2
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Ce ne serait pas plus simple de faire la validation de la saisie dans l'événement Validating du contrôle TextBox ? Pas besoin de jouer avec le focus à ce moment car il suffit d'annuler la validation si la saisie n'est pas correcte (e.Cancel à true).
    Pas de questions techniques par MP

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Points : 52
    Points
    52
    Par défaut
    Merci infiniment, problème résolu!!!!

    En passant, y a t'il façon de faire pour que quand je double clique sur le contrôle textbox dans le formulaire en mode design, qu'au lieu de me créer une fonction évenementielle textChanged, il cré une fonction Validating???

  4. #4
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Citation Envoyé par FadeOut Voir le message
    y a t'il façon de faire pour que quand je double clique sur le contrôle textbox dans le formulaire en mode design, qu'au lieu de me créer une fonction événementielle TextChanged, il crée une fonction Validating???
    Non ce n'est pas possible. L'événement par défaut du TextBox c'est TextChanged et on ne pas pas le modifier.

    N'oublie pas de cliquer sur pour finir
    Pas de questions techniques par MP

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 21/03/2013, 13h54
  2. boucle infinie sur remplissage du rapport
    Par couetbis dans le forum Jasper
    Réponses: 5
    Dernier message: 15/08/2010, 07h39
  3. [AC-2003] Boucle sur les contrôle d'un état
    Par jmde dans le forum IHM
    Réponses: 4
    Dernier message: 09/03/2010, 19h20
  4. boucle sur des contrôles
    Par xawax34 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 31/05/2007, 19h06
  5. Réponses: 5
    Dernier message: 06/05/2007, 18h52

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