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 :

Comment accèder à une méthode publique d'une form à partir d'une autre form


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    janvier 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : janvier 2008
    Messages : 16
    Points : 13
    Points
    13
    Par défaut Comment accèder à une méthode publique d'une form à partir d'une autre form
    Bonjour les amis,

    je débute en C# et suis souvent sur Developpez.com dans le mode RECHERCHE et FAQ. J'ai donc trouver cette FAQ Comment accèder à une méthode publique d'une form à partir d'une autre form créé par la première ? qui semblait répondre complètement à mon besoin mais j'ai du loupé quelque chose. Je vous explique donc mon cas :

    mon projet contient :
    - Une form du nom de mdiFond qui est mdiContainer
    - mdiFond contient un menuStrip (tout ce qu'il y a de plus classique)
    - Lorsque je clique sur Nouveau (un des éléments du menuStrip), je fais apparaitre une nouvelle form appelée mnuEleveur et en voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            private void nouveauToolStripMenuItem_Click(object sender, EventArgs e)
            {
                mnuEleveur frmEleveur = new mnuEleveur();
                frmEleveur.MdiParent = this;
                frmEleveur.Text = "Nouvel éleveur";
                frmEleveur.Show();
                // La feuille apparait dans un ToolStripContainer
                tscMdiFond.ContentPanel.Controls.Add(frmEleveur);
                // Lancement de la méthode pour MAJ de la barre de menu
                MAJBarreMenu("FichierNouveau");
            }
    - Voici également le code de la méthode MAJBarreMenu (qui est de portée PUBLIC pour être accessible de partout)
    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
            public void MAJBarreMenu(string vLocation)
            {
                switch (vLocation)
                {
                    case "FichierNouveau":
                        // Menu Fichier
                        this.fichierToolStripMenuItem.Enabled = true;
                        this.nouveauToolStripMenuItem.Enabled = false;
                        this.ouvrirToolStripMenuItem.Enabled = false;
                        this.fermerToolStripMenuItem.Enabled = true;
                        this.enregistrerToolStripMenuItem.Enabled = true;
                        this.importToolStripMenuItem.Enabled = false;
                        this.exportToolStripMenuItem.Enabled = true;
                        this.imprimerToolStripMenuItem.Enabled = true;
                        this.aperçuavantimpressionToolStripMenuItem.Enabled = true;
                        this.quitterToolStripMenuItem.Enabled = true;
                        // Menu Edition
                        this.editionToolStripMenuItem.Enabled = true;
                        this.annulerToolStripMenuItem.Enabled = false;
                        this.rétablirToolStripMenuItem.Enabled = false;
                        this.couperToolStripMenuItem.Enabled = true;
                        this.copierToolStripMenuItem.Enabled = true;
                        this.collerToolStripMenuItem.Enabled = false;
                        this.sélectionnertoutToolStripMenuItem.Enabled = true;
                        // Menu Outils
                        this.outilsToolStripMenuItem.Enabled = true;
                        this.personnaliserToolStripMenuItem.Enabled = true;
                        this.optionsToolStripMenuItem.Enabled = false;
                        break;
     
                    case "OutilsOptions":
                        // Menu Fichier
                        this.fichierToolStripMenuItem.Enabled = true;
                        this.nouveauToolStripMenuItem.Enabled = false;
                        this.ouvrirToolStripMenuItem.Enabled = false;
                        this.fermerToolStripMenuItem.Enabled = true;
                        this.enregistrerToolStripMenuItem.Enabled = true;
                        this.importToolStripMenuItem.Enabled = false;
                        this.exportToolStripMenuItem.Enabled = false;
                        this.imprimerToolStripMenuItem.Enabled = false;
                        this.aperçuavantimpressionToolStripMenuItem.Enabled = false;
                        this.quitterToolStripMenuItem.Enabled = true;
                        // Menu Edition
                        this.editionToolStripMenuItem.Enabled = true; 
                        this.annulerToolStripMenuItem.Enabled = false;
                        this.rétablirToolStripMenuItem.Enabled = false;
                        this.couperToolStripMenuItem.Enabled = true;
                        this.copierToolStripMenuItem.Enabled = true;
     
                        this.collerToolStripMenuItem.Enabled = false;
                        this.sélectionnertoutToolStripMenuItem.Enabled = true;
                        // Menu Outils
                        this.outilsToolStripMenuItem.Enabled = false;
                        this.personnaliserToolStripMenuItem.Enabled = true;
                        this.optionsToolStripMenuItem.Enabled = false;                    
                        break;
     
                    case "default":
                        // Menu Fichier
                        this.fichierToolStripMenuItem.Enabled = true;
                        this.nouveauToolStripMenuItem.Enabled = true;
                        this.ouvrirToolStripMenuItem.Enabled = true;
                        this.fermerToolStripMenuItem.Enabled = false;
                        this.enregistrerToolStripMenuItem.Enabled = false;
                        this.importToolStripMenuItem.Enabled = true;
                        this.exportToolStripMenuItem.Enabled = false;
                        this.imprimerToolStripMenuItem.Enabled = false;
                        this.aperçuavantimpressionToolStripMenuItem.Enabled = false;
                        this.quitterToolStripMenuItem.Enabled = true;
                        // Menu Edition
                        this.editionToolStripMenuItem.Enabled = false;
                        this.annulerToolStripMenuItem.Enabled = false;
                        this.rétablirToolStripMenuItem.Enabled = false;
                        this.couperToolStripMenuItem.Enabled = true;
                        this.copierToolStripMenuItem.Enabled = true;
                        this.collerToolStripMenuItem.Enabled = false;
                        this.sélectionnertoutToolStripMenuItem.Enabled = true;
                        // Menu Outils
                        this.outilsToolStripMenuItem.Enabled = true;
                        this.personnaliserToolStripMenuItem.Enabled = true;
                        this.optionsToolStripMenuItem.Enabled = true;      
                        break;
     
                    default:
                        break;
                }
            }
    - Et maintenant voici le code de mon bouton ANNULER sur la seconde form mnuEleveur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            private void cmdAnnuler_Click(object sender, EventArgs e)
            {
                mdiFond maMdi = (mdiFond)this.MdiParent;
                if (maMdi != null)
                    maMdi.MAJBarreMenu("default");
                // Fermeture du formulaire
                this.Close();
            }
    Dans le cas présent maMdi retourne toujours une valeur null et je ne comprends pas pourquoi. L'idée ici étant de remettre le menuStrip de ma feuille Mdi dans sa situation d'origine.

    Merci d'avoir pris le temps de lire ce long post et en attendant une réponse vous souhaite d'excellentes fêtes de fin d'année.

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    novembre 2007
    Messages
    3 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : novembre 2007
    Messages : 3 137
    Points : 2 815
    Points
    2 815
    Par défaut
    c'est le fait de l'ajouter au ToolStipContainer qui provoque ça.
    Je viens de faire un test rapide et cet ajout rend caduque le mdiparent.
    Maintenant, comment résoudre ça, je ne sais pas :-) .

    A défaut tu peux faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mdiFond maMdi = Application.OpenForms["mdiFond"] as mdiFond;
    Autre solution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ToolStripContentPanel tp = this.Parent as ToolStripContentPanel;
    ToolStripContainer tc = tp.Parent as ToolStripContainer;
    mdiFond  frm = tc.Parent as mdiFond ;

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    janvier 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : janvier 2008
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    Merci beaucoup pour ta réponse.
    Je vais essayer cela dans la foulée.
    Si je n'arrive pas à m'en sortir alors je me passerai du ToolStripContainer.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/10/2008, 09h52
  2. Réponses: 7
    Dernier message: 09/06/2008, 10h57
  3. Pb d'ouverture d'un form à partir d'un autre form
    Par jeremy_d dans le forum Windows Forms
    Réponses: 9
    Dernier message: 14/05/2008, 13h09
  4. Réponses: 4
    Dernier message: 21/04/2006, 23h08
  5. [C#] appeler Close() d'un form à partir d'un autre form
    Par vvvvv dans le forum Windows Forms
    Réponses: 4
    Dernier message: 06/02/2006, 19h36

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