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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 202
    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
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 194
    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)

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

    Informations forums :
    Inscription : Juillet 2011
    Messages : 202
    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 chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    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
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 194
    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();

  6. #6
    Membre Expert 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
    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

  7. #7
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 194
    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

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

    Informations forums :
    Inscription : Juillet 2011
    Messages : 202
    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!

  9. #9
    Membre Expert 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
    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!!!

+ 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