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

Windows Forms Discussion :

[C#.Net] OnValidated pas toujours là ?


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2004
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 359
    Par défaut [C#.Net] OnValidated pas toujours là ?
    Bonjour,

    Dans un composant, hérité de TextBox et dans une DLL je redéfini la méthode OnValidated...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            protected override void OnValidated(EventArgs e)
            {
                base.OnValidated(e);
                this.FindForm().SelectNextControl(this, true, true, false, true);
            }
    Or, dans mon projet, quand j'importe ce composant, dans ses événements je ne trouve pas la méthode OnValidated ?!
    Bon, ok elle peut ne pas être affiché dans les propriétés mais quand même être sur le composant, mais j'ai trouvé "seulement" Validated !

    Tout ça pour dire que justement l'événement Validated n'a pas l'air de se déclanché, alors que le test dans la DLL fonctionnait bien !

    édit: Je veux, qu'un appuie sur la touche Entrée donne le même comportement que la touche Tab.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Par défaut
    Heu, la methode est protégée, a tout hasard. Donc, ca me semble normal. =)

  3. #3
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Et de plus ce n'est pas un évènement.

    Si tu as besoin d'exécuter quelque chose sur validation, câbler l'évènement Validated.

  4. #4
    Membre éclairé
    Inscrit en
    Octobre 2004
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 359
    Par défaut
    Du coup, dans ma DLL je fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            private void MonnaieTextBox_Validated(object sender, EventArgs e)
            {
                this.FindForm().SelectNextControl(this, true, true, false, true);
            }
    Quand je teste (dans la DLL) ça fonctionne bien, mais pareil, quand j'importe le composant dans le projet sur Entrée il ne se passe rien !

    Par contre, j'ai remarqué un comportement suspect, quand j'entre une valeur dans mon composant qui hérite de TextBox, puis quand je clic ailleur (sur une ligne de DataGridView par exemple) alors le focus va se mettre sur le composant suivant (le comportement que j'aimerai au moment où l'on presse Entrée finalement). Du coup, on clique sur un contrôle et c'est pas forcément lui qui a le focus à cause de mon composant !!!

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Je trouve le FindForm.SelectNextControl manque un peu de robustesse, voire d'élégance.

    Pourquoi ne décrits tu pas un event local à ton contrôle que tu "raise" et fais faire le SelectNextControl ou ce que tu veux dans le handler de cet évènement, directement dans le container (Form ou UserControl de niveau supérieur).

  6. #6
    Membre éclairé
    Inscrit en
    Octobre 2004
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 359
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Je trouve le FindForm.SelectNextControl manque un peu de robustesse, voire d'élégance.

    Pourquoi ne décrits tu pas un event local à ton contrôle que tu "raise" et fais faire le SelectNextControl ou ce que tu veux dans le handler de cet évènement, directement dans le container (Form ou UserControl de niveau supérieur).
    Oui, alors, heu... je suis quand même un développeur débutant (2 mois d'expérience !) et je me rappelle plus trop comment créer un événement (j'ai du le faire 1 fois dans une vie antérieur)...

    Du coup, il faudrait faire une sorte d'événement qui se déclanche sur la touche Entrée, et qui fais l'action de passer le focus au contrôle suivant, c'est ça ? Sinon, j'ai pas suivit

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

Discussions similaires

  1. [VB.Net] isPostBack est toujours False
    Par graphicsxp dans le forum ASP.NET
    Réponses: 10
    Dernier message: 28/02/2006, 18h23
  2. [C++.NET][DX9] pas moyen d'afficher un triangle
    Par NicolasG dans le forum DirectX
    Réponses: 13
    Dernier message: 02/01/2006, 15h55
  3. Réponses: 9
    Dernier message: 04/10/2005, 19h39
  4. db enregistre pas toujour
    Par cre3000 dans le forum Bases de données
    Réponses: 1
    Dernier message: 23/05/2005, 12h16
  5. [VB6] [Validate et CausesValidation] Ca marche pas toujours !!!
    Par HPJ dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 16/12/2003, 22h09

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