Réponse acceptée !
Bon, j'ai regardé rapidement, je n'ai pas pu tester, travaillant sous Visual Studio 2005.
Mais pour moi , il te manque une variable dans ta classe Form1, qui servirait de réference vers ta fenetre principale :
Dans la Form1 :
public partial class Form1 : Form
{
MDIParent1 MdiParent=null;
public Form1(MDIParent1 appelant)
{
InitializeComponent();
MdiParent = appelant;
}
private void Form1_Load(object sender, EventArgs e)
{
MdiParent.activer();
}
}Et dans la classe MDIParent1 :
public partial class MDIParent1 : Form
{
private int childFormNumber = 0;
public MDIParent1()
{
InitializeComponent();
}
public void activer()
{
newToolStripMenuItem.Enabled = true;
}
private void ShowNewForm(object sender, EventArgs e)
{
Form1 childForm = new Form1(this);
childForm.Text = "Fenêtre " + childFormNumber++;
childForm.Show();
}
...
Le logiciel te demandait que ta fonction activer() soit static car ton appel
MDIParent1.activer() est un appel à une methode agissant sur la classe et pas un appel depuis ton instance actuelle de ta classe, il faut que tu fasse tes appels a partir de ton instance :
MdiParent.activer()De plus dans ta fonction activer, pas besoin de mettre
MDIParent1.newToolStripMenuItem.Enabled, en effet c'est seulement l'item du menu de ton instance en cours que tu veux desactiver, donc
newToolStripMenuItem.Enabled suffit ( ca equivaut implicitement à this.newToolStripMenuItem.Enabled )
Voila voila, si tu peux essayer et me dire si ca fonctionne correctement ( et surtout comme tu le voulais ^^ )
(Sinon je pense pas avoir été très clair sur l'explication du static, donc si quelqu'un voit une meilleure manière de le dire, je suis preneur

)