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:
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:
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:
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.