cs_naylouvar
Messages postés37Date d'inscriptionmardi 14 février 2006StatutMembreDernière intervention 4 mai 2010
-
1 mai 2008 à 08:12
Liverion
Messages postés296Date d'inscriptionmardi 22 avril 2008StatutMembreDernière intervention18 août 2008
-
8 mai 2008 à 09:35
Bonjour:
j'ai une application MDI que ça fait 2 semaines que je cherche comment desactiver le sous-menu Nouveau de main menu Fichier sans trouver la bonne solution :-(
j'ai opter cette solution qui ne fais rien si on clique sur le menu nouveausi la fenetre est déjà ouverte
Liverion
Messages postés296Date d'inscriptionmardi 22 avril 2008StatutMembreDernière intervention18 août 2008 7 mai 2008 à 09:58
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 :
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 )
cs_naylouvar
Messages postés37Date d'inscriptionmardi 14 février 2006StatutMembreDernière intervention 4 mai 2010 5 mai 2008 à 20:46
oui normalement ça devarit fonctionner mais si je fais ça ce message d'erreur apparait:
Erreur 1 Une référence d'objet est requise pour la propriété, la méthode ou le champ non statique 'BouTiQue.MDIParent1.desactiver()'
???
je comprend pas pourquoi cette erreur est générer mais je pense que j'essaye de modifier un objet private par l'intermedière de desactiver() qui est public void
cs_naylouvar
Messages postés37Date d'inscriptionmardi 14 février 2006StatutMembreDernière intervention 4 mai 2010 6 mai 2008 à 05:11
bon j'ai trouver une solution qui marche pas tres bien donc j'appelerai pas une solution
c'est de changer la declaration des elements du menu en static private puis en mettant:
.new
System.Windows.Forms.
ToolStripMenuItem();
au lieu de
this.newToolStripMenuItem = new
System.Windows.Forms.
ToolStripMenuItem();
static
private System.Windows.Forms.
ToolStripMenuItem newToolStripMenuItem;
mais le concepeteur graphique m'efface automatiquement tous les éléments du menu qui sont déclarés avec static
je suis un débutant donc si vous avez une idée de koi je parle merci d'avance de votre aide parlant des delegates je comprend pas trop ...
je compte beaucoup sur votre aide
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_naylouvar
Messages postés37Date d'inscriptionmardi 14 février 2006StatutMembreDernière intervention 4 mai 2010 6 mai 2008 à 23:04
Merci Liverion pour l'interet que vous avez donner à mon sujet:
voici le lien pour telecharger la solution complete (Format 2008)
la compilation donne l'erreur suivante:
Erreur 1 Une référence d'objet est requise pour la propriété, la méthode ou le champ non statique 'TestMenu.MDIParent1.newToolStripMenuItem'
le lien est le suivant:
cs_naylouvar
Messages postés37Date d'inscriptionmardi 14 février 2006StatutMembreDernière intervention 4 mai 2010 8 mai 2008 à 02:20
Bon voilà apres 20jours de recherche sur internet j'ai réussis finalement et c'est grace à toi Liverion :-) bon je vais le mettre sur le site comme code de référence pour tout le monde @+
Merci encore