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#

  1. #1
    Membre régulier

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mai 2005
    Messages : 39
    Points : 102
    Points
    102
    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 du Club
    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
    Points : 47
    Points
    47
    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 régulier

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mai 2005
    Messages : 39
    Points : 102
    Points
    102
    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 du Club
    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
    Points : 47
    Points
    47
    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 régulier

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mai 2005
    Messages : 39
    Points : 102
    Points
    102
    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 du Club
    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
    Points : 47
    Points
    47
    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 éprouvé
    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
    Points : 1 177
    Points
    1 177
    Par défaut
    Il te suffit de ne pas brancher l'événement dans le formulaire enfant.
    "Si vous voulez être l’esclave des banques et payer pour financer votre propre esclavage, alors laissez les banquiers créer la monnaie" - Josiah Stamp, 1920, Gouverneur de la Banque d’Angleterre
    "Qui ne peut acheter ruine qui voudrait vendre" - Jacques Duboin.
    "Nous n'héritons pas la terre de nos parents, nous l'empruntons à nos enfants." - Antoine de Saint Exupéry

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 93
    Points : 169
    Points
    169
    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 régulier

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mai 2005
    Messages : 39
    Points : 102
    Points
    102
    Par défaut
    Tu as essayé les "virtual" et "override" ?
    oui , et quand on fait ça il faut les mettre public sinon ça génère une erreur.

    il faudrait plus de code
    a par comme je l'ai précisé pour le moment il n'y a que les deux événements un sur le père et un sur le fils.

    if (!e.Cancel)
    Oui j'avais essayé, mais c'est pas mieux.

    J'ai essayé aussi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.fpSpread1.CellDoubleClick -= this.ts.fpSpread1_CellDoubleClick;
    Mais ça supprime l'évènnement de l'enfant et pas celui du père.

    Finalement j'ai déclaré un flag au niveau de la classe dans le parent:
    public Boolean isParent = true;
    Dans l'évènnement du parent je le test
    public void fpSpread1_CellDoubleClick(object sender, FarPoint.Win.Spread.CellClickEventArgs e)
    {
    if (!isParent) return;
    Et dans le initialize du formulaire enfant je mets le flag a false
    public dlgSelectionAgence_initMvt()
    {
    InitializeComponent();
    isParent = false;
    }
    :

    Et ça ça fonctionne;
    L’événement du parent est appelé, mais il ressort de suite sans exécuter le code qui suit le test.
    C'est pas très propre, mais j'obtiens le résultat voulu en attendant une solution plus académique.

    Ceci dit ans formulaire enfant avec un test dans le parent ça aurait pu faire l'affaire, mais il se trouve que ce formulaire va être réutiliser à une demi douzaine d'endroit, mais avec un comportement différent sur l'événement en question, ce pourquoi j'ai opté pour l'héritage;

    Merci de vos réponse, JJDai

  10. #10
    Membre régulier

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mai 2005
    Messages : 39
    Points : 102
    Points
    102
    Par défaut
    Il te suffit de ne pas brancher l'événement dans le formulaire enfant.
    Et cmment ?
    JJDai

  11. #11
    Membre du Club
    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
    Points : 47
    Points
    47
    Par défaut
    Tu as essayé les "virtual" et "override" ?
    oui , et quand on fait ça il faut les mettre public sinon ça génère une erreur.
    Tu mets les deux en "protected" et ça fonctionne normalement, non?

    Arnaud DS

  12. #12
    Membre régulier

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mai 2005
    Messages : 39
    Points : 102
    Points
    102
    Par défaut
    Il te suffit de ne pas brancher l'événement dans le formulaire enfant.
    Et cmment ?
    JJDai

  13. #13
    Membre régulier

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mai 2005
    Messages : 39
    Points : 102
    Points
    102
    Par défaut
    Tu mets les deux en "protected" et ça fonctionne normalement, non?
    pas vraiment puisqu'il appel aussi deux fois l'événement de l'enfant.
    Je vais faire un test sur un nouveau projet tout beau tout neuf au cas ou il aurait une merdouille quelque part, on ne sait jamais.
    JJDai

  14. #14
    Membre éprouvé
    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
    Points : 1 177
    Points
    1 177
    Par défaut
    Ma suggestion fonctionne parfaitement :

    Le formulaire de base :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    partial class FrmBase
        {
            /// <summary>
            /// Required designer variable.
            /// </summary>
            private System.ComponentModel.IContainer components = null;
     
            /// <summary>
            /// Clean up any resources being used.
            /// </summary>
            /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
            protected override void Dispose(bool disposing)
            {
                if (disposing && (components != null))
                {
                    components.Dispose();
                }
                base.Dispose(disposing);
            }
     
            #region Windows Form Designer generated code
     
            /// <summary>
            /// Required method for Designer support - do not modify
            /// the contents of this method with the code editor.
            /// </summary>
            private void InitializeComponent()
            {
                this.button1 = new System.Windows.Forms.Button();
                this.SuspendLayout();
                // 
                // button1
                // 
                this.button1.Location = new System.Drawing.Point(48, 40);
                this.button1.Name = "button1";
                this.button1.Size = new System.Drawing.Size(75, 23);
                this.button1.TabIndex = 1;
                this.button1.Text = "button1";
                this.button1.UseVisualStyleBackColor = true;
                this.button1.Click += new System.EventHandler(this.button1_Click);
                // 
                // FrmBase
                // 
                this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
                this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
                this.ClientSize = new System.Drawing.Size(363, 127);
                this.Controls.Add(this.button1);
                this.Name = "FrmBase";
                this.Text = "FrmBase";
                this.ResumeLayout(false);
     
            }
     
            #endregion
     
            private System.Windows.Forms.Button button1;
        }

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public partial class FrmBase : Form
        {
            public FrmBase()
            {
                InitializeComponent();
            }
     
            // >> ICI << protected + virtual
            protected virtual void button1_Click(object sender, EventArgs e)
            {
                MessageBox.Show("Je suis dans FrmBase");
            }
        }

    Maintenant un formulaire qui hérite du précédent :

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     partial class FrmTest1
        {
            /// <summary>
            /// Variable nécessaire au concepteur.
            /// </summary>
            private System.ComponentModel.IContainer components = null;
     
            /// <summary>
            /// Nettoyage des ressources utilisées.
            /// </summary>
            /// <param name="disposing">true si les ressources managées doivent être supprimées*; sinon, false.</param>
            protected override void Dispose(bool disposing)
            {
                if (disposing && (components != null))
                {
                    components.Dispose();
                }
                base.Dispose(disposing);
            }
     
            #region Code généré par le Concepteur Windows Form
     
            /// <summary>
            /// Méthode requise pour la prise en charge du concepteur - ne modifiez pas
            /// le contenu de cette méthode avec l'éditeur de code.
            /// </summary>
            private void InitializeComponent()
            {
                this.components = new System.ComponentModel.Container();
                // >> ICI << ON NE BRANCHE SURTOUT PAS le Click du bouton sinon ça déclenchera 2x
            }
     
            #endregion
        }



    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    public partial class FrmTest1 : FrmBase
        {
            public FrmTest1()
            {
                InitializeComponent();
            }
     
            protected override void button1_Click(object sender, EventArgs e)
            {
                // >> ICI << On n'appelle pas l'ancêtre car c'est justement le but.
                // base.button1_Click(sender, e);
     
                // En revanche on fait autre chose :
                MessageBox.Show("Test ok !");
            }
        }
    Simple non ?
    "Si vous voulez être l’esclave des banques et payer pour financer votre propre esclavage, alors laissez les banquiers créer la monnaie" - Josiah Stamp, 1920, Gouverneur de la Banque d’Angleterre
    "Qui ne peut acheter ruine qui voudrait vendre" - Jacques Duboin.
    "Nous n'héritons pas la terre de nos parents, nous l'empruntons à nos enfants." - Antoine de Saint Exupéry

  15. #15
    Membre régulier

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mai 2005
    Messages : 39
    Points : 102
    Points
    102
    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

  16. #16
    Membre éprouvé
    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
    Points : 1 177
    Points
    1 177
    Par défaut
    De rien.

    Ne pas oublier de mettre le fil à "résolu".
    "Si vous voulez être l’esclave des banques et payer pour financer votre propre esclavage, alors laissez les banquiers créer la monnaie" - Josiah Stamp, 1920, Gouverneur de la Banque d’Angleterre
    "Qui ne peut acheter ruine qui voudrait vendre" - Jacques Duboin.
    "Nous n'héritons pas la terre de nos parents, nous l'empruntons à nos enfants." - Antoine de Saint Exupéry

  17. #17
    Membre régulier

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mai 2005
    Messages : 39
    Points : 102
    Points
    102
    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

  18. #18
    Membre régulier

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mai 2005
    Messages : 39
    Points : 102
    Points
    102
    Par défaut oops
    Oops ! Je viens de trouver le bouton, décidément j'ai de la m..; dans les yeux !!!
    JJDai

  19. #19
    Membre éprouvé
    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
    Points : 1 177
    Points
    1 177
    Par défaut
    Pour l'obstruction des yeux je ne peux pas grand chose...
    Pour la visibilité, effectivement, de private faut passer à protected pour que cela reste accessible aux descendants, et public pour tout le monde (peu recommandé pour un champ).
    On peut changer la visibilité d'un membre à la main, avec un bonus pour les composants ou contrôles qui ont une propritété "Modifiers" dans la grille de propriétés qui permet aussi de le faire.
    On peut aussi avoir un membre private et faire une propriété protected (ou public qui dans ce cas apparaitra dans la grille de propriétés) (et on décide de l'accessibilité lecture seule ou lecture/écriture).
    "Si vous voulez être l’esclave des banques et payer pour financer votre propre esclavage, alors laissez les banquiers créer la monnaie" - Josiah Stamp, 1920, Gouverneur de la Banque d’Angleterre
    "Qui ne peut acheter ruine qui voudrait vendre" - Jacques Duboin.
    "Nous n'héritons pas la terre de nos parents, nous l'empruntons à nos enfants." - Antoine de Saint Exupéry

  20. #20
    Membre régulier

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mai 2005
    Messages : 39
    Points : 102
    Points
    102
    Par défaut Portée des variables
    Ok merci beaucoup.
    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, 07h31
  2. Désactiver le double clic dans un formulaire
    Par ptichum dans le forum Access
    Réponses: 1
    Dernier message: 04/06/2008, 12h46
  3. Réponses: 2
    Dernier message: 21/11/2007, 12h21
  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, 09h54
  5. Provoquer l'évènement d'un sous-formulaire
    Par ClaudeLELOUP dans le forum IHM
    Réponses: 11
    Dernier message: 28/11/2006, 20h17

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