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 :

Accès à une méthode d'une form depuis une autre autre form


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 202
    Points : 101
    Points
    101
    Par défaut Accès à une méthode d'une form depuis une autre autre form
    Bonjour j'ai un petit pépin pour avoir accès à une méthode d'une form mais à partir d'une autre form

    En gros j'ai tenté écrire ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     wfrm_settings_dashboard.radgridview_loadcontent();
    ou settings_dashboards est ma form qui contient la méthode loadcontent
    et j'ai placé ceci donc dans une autre form.

    j'ai toujours un message d'erreur
    Comment peux-t-on faire ce genre de choses s'il vous plait ?
    Merci d'avance

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 180
    Points : 4 496
    Points
    4 496
    Par défaut
    1) Il Faut que la méthode soit public
    2) Il faut passer la premiere form à la 2eme form (via une propriété par exemple)
    Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 202
    Points : 101
    Points
    101
    Par défaut
    Merci à toi pour ta réponse.
    La méthode est déjà publique, mais par contre pour ton petit 2) je vois pas trop ...
    Qu'est ce que tu entends par là ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Points : 560
    Points
    560
    Par défaut
    En gros ta deuxième form doit contenir une référence vers ta form1.

    Comme par exemple :
    Code : 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
     
     
            public partial class Form1: Form
            {
                public Form1()
                {
                    InitializeComponent();
                }
                public void SayHello()
                {
                    MessageBox.Show("Hello !");
                }
     
            }
     
            public partial class Form2 : Form
            {
                Form1 _form1;
                public Form2(Form1 form1)
                {
                    InitializeComponent();
                    _form1 = form1;
     
                }
                public void AppelMethodeForm1()
                {
                    _form1.SayHello();
                }
     
            }
    Edit : C'est un exemple en utilisant un conctructeur, comme l as dit BenoitM, tu peux aussi utiliser une propriété.

    Tu peux aussi utiliser une méthode statique si ta méthode ne dépend pas d'une instance de ta Form1.

    Etc ...

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 180
    Points : 4 496
    Points
    4 496
    Par défaut
    Soit la solution de Aeronia soit tu ajoutes une proriété
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //Init Form2 
    Form2 maform2 = new Form2()
    maform2.Form1 = this;
    maform2.Show();
    ps : un test pour vérfier que la propriété Form1 n'est pas null peut-être utile
    Il y a peut etre aussi moyen d'y acceder via ParentForm, dans ce cas la besoin de rien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // dans form2
    ((Form1)this.ParentForm).maFonction();
    Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes

  6. #6
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut
    Bonjour,

    Pour compléter un peu ce qu'on t'as dit précédemment et qui est tout à fait correct. Si tu ne te sers pas de la valeur renvoyée et que tu n'as pas besoin d'une instance dans la fonction load_content, tu peux aussi la rendre static. Dans ce cas là, tu n'as plus qu'à appeler la méthode statique de ta classe.

    Code : 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
     
    public class Form1 : Form
    {
        public Form1()
        {
            InitializeComponents();
        }
        public static void Coucou()
        {
            MessageBox.Show("Coucou!!!");
        }
    }
    public class Form2 : Form
    {
        public Form2()
        {
            InitializeComponents();
        }
        public void AppelerMethodeCoucouForm1()
        {
            Form1.Coucou();
        }
    }
    Bon dév
    Un âne se croit savant parce qu'on le charge de livres (proverbe américain)

    N'oubliez pas de avant de
    Pas de question techniques par MP, c'est contre la philosophie du forum

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 202
    Points : 101
    Points
    101
    Par défaut
    Merci à vous deux pour vos précieuses explications ...

    J'ai finalement utilisé ParentForm, mais je garde les autres possibilités en mémoire.
    Par contre j'ai une dernière question un peu semblable...

    Je souhaite maintenant quand je suis dans une form avoir accès à un bouton d'un autre forme qui n'est pas encore "apparue" ( pour changer son tag )

    C'est pas terrible de modifier dans le designer le private en public du bouton non ?

    je suis dans wfrm_settings_dashboards et j'écris ceci:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wfrm_AddOrModifyDashboards.BtnDashboard.Tag = "add";
    thx!

  8. #8
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut
    Je te confirme que c'est pas terrible du tout.
    Ça s'appelle de manière générale de la bidouille.
    Que cherches-tu à faire? Il faut revoir ta conception, parce que là, c'est pas normal d'avoir à faire ça!!!
    Un âne se croit savant parce qu'on le charge de livres (proverbe américain)

    N'oubliez pas de avant de
    Pas de question techniques par MP, c'est contre la philosophie du forum

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 202
    Points : 101
    Points
    101
    Par défaut
    En gros dans ma form1, si je clique à un endroit cela ouvre une autre form pour faire un ajout ou une modification.
    C'est la raison pour laquelle j'utilise un tag dans le bouton submit de la form2 ( qui sert donc d'ajout ou modification )
    si le tag est "add" c'est ajout , si c'est "modify" je fais un update en quelque sorte ...

    à la base j'avais pas tout ces problèmes car tout se faisait dans la même form, mais j'ai voulu ouvrir une autre form pour demander à l'utilisateur de renseigner ses champs pour un ajout ou de les changer pour une modification ...

    donc en gros quand j'arrive dans la form2, je ne sais pas encore si je suis en mode ajout ou modification jusqu'a ce que j'analyse le tag du bouton submit ...

  10. #10
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 180
    Points : 4 496
    Points
    4 496
    Par défaut
    Citation Envoyé par sisqo60 Voir le message
    Bonjour,

    Pour compléter un peu ce qu'on t'as dit précédemment et qui est tout à fait correct. Si tu ne te sers pas de la valeur renvoyée et que tu n'as pas besoin d'une instance dans la fonction load_content, tu peux aussi la rendre static. Dans ce cas là, tu n'as plus qu'à appeler la méthode statique de ta classe.

    Bon dév
    Euh oui mais les méthodes statics ne peuvent faire qu'appel à des méthodes statics donc je ne pense pas que ca aie bcp d'utilité dans ce cas ci.
    Si tu y arrives c'est surement que cette méthode devrait être dans un autre objet et non dans ta Form1
    Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes

  11. #11
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 180
    Points : 4 496
    Points
    4 496
    Par défaut
    Citation Envoyé par arngrimur Voir le message
    En gros dans ma form1, si je clique à un endroit cela ouvre une autre form pour faire un ajout ou une modification.
    C'est la raison pour laquelle j'utilise un tag dans le bouton submit de la form2 ( qui sert donc d'ajout ou modification )
    si le tag est "add" c'est ajout , si c'est "modify" je fais un update en quelque sorte ...

    à la base j'avais pas tout ces problèmes car tout se faisait dans la même form, mais j'ai voulu ouvrir une autre form pour demander à l'utilisateur de renseigner ses champs pour un ajout ou de les changer pour une modification ...

    donc en gros quand j'arrive dans la form2, je ne sais pas encore si je suis en mode ajout ou modification jusqu'a ce que j'analyse le tag du bouton submit ...
    A ta place j'ajouterais une property Mode qui référence un enum
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public enum Mode
    {
    Lecture
    Ajout,
    Supression,
    Modification
    }
    Quand tu changes cette propriété , tu changes le text de ton bouton en fonction de la valeur que tu sets
    Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 202
    Points : 101
    Points
    101
    Par défaut
    T'as pas un petit exemple sous le coude si tu as le temps... je crois que je vais m'y perdre

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 202
    Points : 101
    Points
    101
    Par défaut
    En gros là j'ai ça :

    dans ma form1 donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
           public enum Mode
            {
                Add,Modify
            }
    L'utilisateur veut faire un ajout:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            private void radMenuNewItem_Click(object sender, EventArgs e)
            {
                radBtnOk.Tag = "add";
                Mode mode = Mode.Add;
                wfrm_AddOrModifyDashboards aForm = new wfrm_AddOrModifyDashboards();
                DialogResult aFormResult = aForm.ShowDialog();
     
            }

    dans la form2 ( analyse )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                switch (((wfrm_settings_dashboard)this.ParentForm).mode)
                {
                    case "add":
     
    //ect

  14. #14
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 180
    Points : 4 496
    Points
    4 496
    Par défaut
    Code : 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
    public partial class Form1: Form
            {
                public Form1()
                {
                    InitializeComponent();
                }
                public void SayHello()
                {
                    MessageBox.Show("Hello !");
                }
     
                public void Add()
                {
                    Form2 f2 = new Form2(this);
                    f2.Mode=Mode.Add;
                    f2.Show();
                }
     
            }
    Code : 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
    public partial class Form2 : Form
            {
                Form1 _form1;
                private Mode _mode;
     
                public Mode Mode
                {
                   get { return _mode;}
                   set { 
                          _mode=value;
                          switch (_mode)
                          {
                               case Mode.Add:
                                      radBtnOk.Text="Ajouter";
                                      break;
                               case Mode.Delete:
                                      radBtnOk.Text="Effacer";
                                      break;
     
                          }
     
                }
     
                public Form2(Form1 form1)
                {
                    InitializeComponent();
                    _form1 = form1;
                }
                public void AppelMethodeForm1()
                {
                    _form1.SayHello();
                }
     
            }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public enum Mode
    {
    Read,
    Add,
    Delete,
    Update
    }
    Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes

  15. #15
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Points : 560
    Points
    560
    Par défaut
    Voici un exemple basique :

    Code : 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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
     
     
     
    public partial class Form_Main : Form
        {
            public Form_Main()
            {
                InitializeComponent();
            }
            private void buttonCréer_Click(object sender, EventArgs e)
            {
                Creation();
            }
            private void Creation()
            {
                Form_Exemple fenexemple = new Form_Exemple();
                DialogResult diag = fenexemple.ShowDialog();
                if (diag == DialogResult.OK)
                {
                    Exemple Nouveau = fenexemple.ExempleAjoute;
                    if(Nouveau !=null)
                    {
                        //...
                    }
                }
     
            }
     
        }
     
        public partial class Form_Exemple : Form
        {
            Mode _mode;
            public Exemple ExempleAjoute=null;
            private Exemple ExempleModifie=null;
     
            public Form_Exemple()
            {
     
                InitializeComponent();
                _mode = Mode.Ajout;
            }
     
             public Form_Exemple(Exemple exemple)
            {
     
                InitializeComponent();
                 _mode = Mode.Modification;
                ExempleModifie=  exemple;
            }
     
            public Form_Exemple_Load(object sender, EventArgs e)
            {
                switch(_mode)
                {
                    case Mode.Ajout : buttonAction.Text = "Créer";
                        break;
                    case Mode.Modification : buttonAction.Text = "Modifier";
                    break;
                       //...
                    default : buttonAction.Text = "Action inconnue";
                }
            }
     
     
            private void Validation()
            {
                if (_mode == Mode.Ajout)
                {
                    ExempleAjoute = new Exemple("Texte d'exemple");
                    DialogResult = DialogResult.OK;
                }
                else if (_mode == Mode.Modification)
                {
                    if(ExempleModifie !=null)
                    {
                         ExempleModifie.Nom = "Nouveau Texte";
                         DialogResult = DialogResult.OK;
                    }
     
                }
                //...
     
     
            }
     
            private void buttonOK_Click(object sender, EventArgs e)
            {
                Validation();
            }
     
        }
     
        public enum Mode
        {
            Lecture,
            Ajout,
            Supression,
            Modification
        }
     
        public class Exemple
        {
            private Guid _id;
     
            public Guid ID
            {
                get { return _id; }
                set
                {
                    if (_id != value)
                        _id = value;
     
                }
            }
     
            private string _nom;
     
            public string Nom
            {
                get { return _nom; }
                set
                {
                    if (_nom != value)
                        _nom = value;
     
                }
            }
     
            public Exemple() :this.Exemple("")
            {
            }
     
            public Exemple(string nom)
            {
                ID = Guid.NewGuid();
                Nom=nom;
            }
    }
    Maintenant, c'est une manière de faire, il y en a d'autres mais ca te permettra d'en illustrer une d'elle.

  16. #16
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut
    Pour ta gouverne, oui dans une méthode statique, tu ne peux qu'utiliser des méthodes et des propriétés qui le sont elles aussi, sauf si on te passe en paramètre une instance d'un objet et rien ne t'empêche non plus de créer une instance d'objet!!!
    Pas besoin de remarques qui ne servent à rien...

    BenoitM, Juste pour te contredire :p, il pourrait faire comme ceci :

    Code : 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
     
    public class Form1 : Form
    {
         public List<MonType> liste {get; set;}
         public Form1()
         {
              InitializeComponents();
              liste = new List<MonType>();
         }
     
         public void Ajouter()
         {
              MonType t =Form2.AfficherFenêtreAjoutModif(null);
              liste.Add(t);
         }
         public void Modifier()
         {
              Form2.AfficherFenêtreAjoutModif(uneInstance);
         }
    }
     
    public class Form2 : Form
    {
         private MonType MonObjetAAjouterOuModifier;
         private Reason LaRaison;
     
         private Form2()
         {
              InitializeComponents();
         }
     
         public static MonType AfficherFenêtreAjoutModif(MonType pInstance)
         {
              using(Form2 frm = new Form2())
              {
                    frm.MonObjetAAjouterOuModifier = pInstance ?? new MonType();
                    frm.LaReason = pInstance==null?Reason.Ajout : Reason.Modify;
                    if (frm.ShowDialog()==DialogResult.OK)
                    {
                            return frm.MonObjetAAjouterOuModifier;
                    }
                    return null;                
              }
         }
    //Ajouter à la suite toutes les méthodes concernant la modification d'objet MonObjetAAjouterOuModifier...
    //Il doit y avoir un bouton OK pour lequel il faut valoriser la propriété DialogResult à OK 
    //et un autre Annuler qui lui aura à valoriser la même propriété à Cancel 
    //et tous les deux doivent appeler la méthode Close. 
    }
     
    public enum Reason
    {
         Ajout,
         Modification
    }
    Toutes les méthodes sont privées car l'affichage et l'instanciation de cette fenêtre doit être fait uniquement par la propriété. Le retour de cette fonction doit être testé, si la valeur renvoyée est nulle, c'est que l'utilisateur a annulé. sinon la fonction renvoie la même référence modifiée ou une nouvelle instance de cette classe.

    Sur ce bon dév
    Un âne se croit savant parce qu'on le charge de livres (proverbe américain)

    N'oubliez pas de avant de
    Pas de question techniques par MP, c'est contre la philosophie du forum

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 202
    Points : 101
    Points
    101
    Par défaut
    Merci pour toutes vos infos.
    J'ai trouvé aussi des infos pour faire un Callback vers cette méthode. ça marche aussi bien...

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

Discussions similaires

  1. Acces aux control d'une form depuis une classe
    Par PhilCou dans le forum Windows Forms
    Réponses: 2
    Dernier message: 22/07/2008, 09h59
  2. Réponses: 6
    Dernier message: 29/04/2008, 09h34
  3. accéder à une méthode de l'ActionForm depuis une jsp
    Par bags1509 dans le forum Struts 1
    Réponses: 2
    Dernier message: 25/02/2008, 13h42
  4. Réponses: 17
    Dernier message: 15/04/2007, 12h28
  5. Réponses: 3
    Dernier message: 16/01/2006, 16h02

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