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 :

Désactiver un évènement hérité d'un formulaire [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2005
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mai 2005
    Messages : 40
    Par défaut Désactiver un évènement hérité d'un formulaire
    Bonjour
    J'ai un premier formulaire avec du code sur événement double_click d'un objet.
    Ce formulaire est hérité, avec un code différent sur le double_click de l'objet.
    problème sur le formulaire hérité il exécute le code du formulaire enfant puis du formulaire parent.
    Comment désactiver celui du formulaire parent?

    JJDai

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 35
    Par défaut
    Bonjour,

    pourrais-tu montrer un peu de code pour qu'on cerne mieux ton problème?

    Si j'ai bien compris:
    -Tu as un formulaire Père et un Formulaire Fils qui hérite des propriétés du Père.
    -Lorsque tu lances le Formulaire Enfant et que doubleclickObject() (appelons la méthode-event associée à l'objet comme cela), le programme appelle Père.doubleclickObject().

    Est-ce bien cela ?

    Si oui, as-tu fais un "override" sur la methode doubleclickObject() de la classe formulaire Fils?


    Arnaud DS

  3. #3
    Membre confirmé

    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2005
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mai 2005
    Messages : 40
    Par défaut
    C'est tout à fait cela , il appel en premier enfant.doubleclickObject(). puis en second Père.doubleclickObject().

    Non il n'y a pas de "override", j'ai essayé mais il doit manqué quelque chose, ça génère une erreur; les membres virtual ou abstract ne peuvent pas etre private.

    code du parent (simplifié):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
           private void fpSpread1_CellDoubleClick(object sender, FarPoint.Win.Spread.CellClickEventArgs e)
           MessageBox.Show("Hello Papa");
            }
    Code de l'enfant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
          private void fpSpread1_CellDoubleClick(object sender, FarPoint.Win.Spread.CellClickEventArgs e)
            {
                MessageBox.Show("Hello child");
            }
    Les deux message s'affichent, et je ne voudrais pas celui du père.
    Une solution serait de n'avoir aucun code dans le père et d'avoir deux formulaires qui héritent du père, mais ça ferait 3 formulaires au lieu de deux.
    JJDai

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 35
    Par défaut
    OK.

    Met la méthode père "virtual" (pour permettre à la méthode d'être substitué par ta classe fils) et la méthode fils "override" (pour que ce soit cette méthode qui soit appelée si l'objet est de type fils).

    Ça devrait fonctionner.


    Arnaud DS

  5. #5
    Membre confirmé

    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2005
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mai 2005
    Messages : 40
    Par défaut virtuel override
    En les mettant public ça fonctionne à part un détail (de taille), maintenant il appel deux fois de suite l’événement double_click de l'enfant !!!!!
    surprenant !
    JJDai.

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 35
    Par défaut


    Étrange en effet, d'autant plus qu'en mettant les deux en public il devrait appeler la méthode du Père. Après, tout dépend comment tu instancies tes objets... il faudrait plus de code...

    Tu as essayé les "virtual" et "override" ?


    Arnaud DS

  7. #7
    Membre émérite
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Par défaut
    Il te suffit de ne pas brancher l'événement dans le formulaire enfant.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 93
    Par défaut
    Salut,

    Et si tu fais ça ça fonctionne ?

    code du parent (simplifié):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
           private void fpSpread1_CellDoubleClick(object sender, FarPoint.Win.Spread.CellClickEventArgs e)
           if (!e.Cancel)
                  MessageBox.Show("Hello Papa");
            }
    Code de l'enfant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private void fpSpread1_CellDoubleClick(object sender, FarPoint.Win.Spread.CellClickEventArgs e)
            {
                MessageBox.Show("Hello child");
                e.Cancel = true;
            }

  9. #9
    Membre confirmé

    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2005
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mai 2005
    Messages : 40
    Par défaut Simple quand on connait la bétise que l'on fait
    Merci neilbgr,

    En fait il faut lire les petites lignes, et laisser reposer quelques jours:
    private void InitializeComponent()
    {
    this.components = new System.ComponentModel.Container();
    // >> ICI << ON NE BRANCHE SURTOUT PAS le Click du bouton sinon ça déclenchera 2x
    }
    Ce qui est important et que j'ai vu cent fois sans la lire:
    // >> ICI << ON NE BRANCHE SURTOUT PAS le Click du bouton sinon ça déclenchera 2x
    Tu me la copiera 100 fois !!!!

    et que donc il faut ou virer ou mettre en commentaire tous les branchements d'évennements intempestifs:
    //this.cmdTest.Click += new System.EventHandler(this.cmdTest_Click);

    Et la effectivement tout va bien

    Merci à tous, JJDai

  10. #10
    Membre émérite
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Par défaut
    De rien.

    Ne pas oublier de mettre le fil à "résolu".

  11. #11
    Membre confirmé

    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2005
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mai 2005
    Messages : 40
    Par défaut Petite question subsidiaire
    C'est ce que j'ai essayé de faire mais je ne vois pas ou ? si ce n'est dans le titre du topic !

    Cependant j'ai une petite question subsidiaire:
    J'ai une variable qui est déclaré au niveau de la classe, mais je n'y accède pas dans l'enfant.
    Je suppose que c'est un problème de portée, mais j'ai un doute, en VB6 il y avait Friend qui n'existe pas en c# apparemment remplacer par Public, est-ce correct ?

    public partial class dlgSelectionAgence
    {
    private string sUniteSelected = "";
    private FarpointWs fp = null;
    en
    public partial class dlgSelectionAgence
    {
    private string sUniteSelected = "";
    public FarpointWs fp = null;
    JJDai

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

Discussions similaires

  1. Désactiver la touche entrée dans un formulaire
    Par Mat67 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 24/02/2013, 06h31
  2. Désactiver le double clic dans un formulaire
    Par ptichum dans le forum Access
    Réponses: 1
    Dernier message: 04/06/2008, 11h46
  3. Réponses: 2
    Dernier message: 21/11/2007, 11h21
  4. Liste de tous les évènements possibles sur un formulaire
    Par Zhebulon dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 18/06/2007, 08h54
  5. Provoquer l'évènement d'un sous-formulaire
    Par ClaudeLELOUP dans le forum IHM
    Réponses: 11
    Dernier message: 28/11/2006, 19h17

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