Activer le menu approprié

Signaler
Messages postés
37
Date d'inscription
mardi 14 février 2006
Statut
Membre
Dernière intervention
4 mai 2010
-
Messages postés
37
Date d'inscription
mardi 14 février 2006
Statut
Membre
Dernière intervention
4 mai 2010
-
Bonjour
J'ai une application MDI faite par C# et que je veux rendre SDI (single document interface) donc la solution c'est de d'esactiver le menu Fichier/Nouveau quand on a un document ouvert.
j'aimerai savoir comment on peut faire ça et aussi comment fait Visual studio (IDE) pour activer selon le format de fichier ouvert les menus corespondant  par exemple le menu du concepteur graphique diffère de celui de l'editeur de code et celui de l' editeur de classe meme les elements de la barre de menu peut changer (ajout/suppression) si c possible aussi de m'aider a fusionner les menus par exemple afficher Fermer sous menu Fichier quant on a une fenetre ouverte j'ai essayer merge mais j'y pas arriver
Si vous aver un exemple ça sera tres helpfull
Merci de votre aide

8 réponses

Messages postés
296
Date d'inscription
mardi 22 avril 2008
Statut
Membre
Dernière intervention
18 août 2008

Bonjour,
Pour tous les elements d'interface tu as une propriété Enabled, si tu fais par exemple newToolStripMenuItem.Enable = false; alors l'utilisateur ne pourra plus cliquer sur l'element newToolStripMenuItem.Enable, il sera mis en grisé.
Apres pour gerer selon le type de fichier ouvert tu peux toujours faire une detection sur la fin du nom de ficher
if openFileDialog.Filename.EndsWith(".cs") par exemple ^^

En esperant que cq reponde un peu a ta question
Messages postés
37
Date d'inscription
mardi 14 février 2006
Statut
Membre
Dernière intervention
4 mai 2010

Merci pour ta reponse mais c'est pas le porbleme dans enable mais comment faire pour la reactiver si l'utilisateur à fermer la fenetre child? y a pas d'evenment qui permet de reactiver le menu de la form parent, j'ai essayer avec ce code mais ça ne marche pas :-(

// evenement FormClosed pour la fenetre child

private
void Childfrm_FormClosed(
object sender,
FormClosedEventArgs e){

newToolStripMenuItem
.Enabled =

true;

newToolStripButton.Enabled = true;

}
.....

//
.....Childfrm

childForm =
new
Childfrm();

//childForm = this.ActiveMdiChild;

childForm.MdiParent =
this;newToolStripMenuItem.Enabled false;newToolStripButton.Enabled

false;childForm.Show();
.....

le probleme c'est que la portée de newToolStripMenuItem et limitter dans le fichier MDIparent donc n'est pa reconnu au niveau de childForm meme en changeant sa declaration de private à static public

si vous avez quelque exemples ça sera un big help for me
thanx
Messages postés
296
Date d'inscription
mardi 22 avril 2008
Statut
Membre
Dernière intervention
18 août 2008

Le child n'arrive pas a voir ces elements meme quand tu les mets en public ? Tu as essayé en les appelant comme ca :

MdiParent.ne
wToolStripMenuItem.Enabled = true
;
Messages postés
37
Date d'inscription
mardi 14 février 2006
Statut
Membre
Dernière intervention
4 mai 2010

meme avec
MdiParent.ne
wToolStripMenuItem.Enabled = true

newToolStripMenuItem n'est pas reconnu meme avec public.
Merci quand meme
Messages postés
296
Date d'inscription
mardi 22 avril 2008
Statut
Membre
Dernière intervention
18 août 2008

Sinon tu peux toujours ecrire une fonction publique dans ta fenetre mere qui reactiverait tes menu, fonction aui serait appelée par l'evenement de fermeture de ta fenetre child
Messages postés
37
Date d'inscription
mardi 14 février 2006
Statut
Membre
Dernière intervention
4 mai 2010

Erreur 1 Une référence d'objet est requise pour la propriété, la méthode ou le champ non statique 'BouTiQue.MDIParent1.newToolStripMenuItem' D:\Restor\mes docs\Visual Studio 2008\Mes Projets\BouTiQue\BouTiQue\Articles.cs 20 13 BouTiQue

mais si je met:
static

public System.Windows.Forms.
ToolStripMenuItem newToolStripMenuItem;
j'ai comme erreurs de compilation ça :
Erreur 1 Le membre 'BouTiQue.MDIParent1.newToolStripMenuItem' est inaccessible avec une référence d'instance ; qualifiez-le avec un nom de type D:\Restor\mes docs\Visual Studio 2008\Mes Projets\BouTiQue\BouTiQue\MDIParent1.Designer.cs 35 13 BouTiQue
sur toutes les appelles de newToolStripMenuItem.
Messages postés
37
Date d'inscription
mardi 14 février 2006
Statut
Membre
Dernière intervention
4 mai 2010

j'ai créer une fonction public comme tu m'as dis et que j'ai appellé de nouveau depuis la form child (qui ne la reconnait pas)
public






void
Nouveau(){


MDIParent1
.newToolStripMenuItem.Enabled =

true
;}
 elle m'a donner comme erreur ça :
Erreur 1 Une référence d'objet est requise pour la propriété, la méthode ou le champ non statique 'BouTiQue.MDIParent1.newToolStripMenuItem' D:\Restor\mes docs\Visual Studio 2008\Mes Projets\BouTiQue\BouTiQue\MDIParent1.cs 15 13 BouTiQue

Si vous preferer que je vous envoie le code entier pas de probleme
Merci infiniment
Messages postés
37
Date d'inscription
mardi 14 février 2006
Statut
Membre
Dernière intervention
4 mai 2010

voilà le code finale enfin :-) cela me permet de  ne pas charger deux fenetre child a la meme fois mais ne désactive pas le menu nouveau

Articles
childForm =

new



Articles
();


//childForm = this.ActiveMdiChild;






foreach
(

Form
frm

in
MdiChildren)


if
( frm

is



Articles
) {

childForm = (


Articles
) frm;


break
;

}


else






if
( childForm ==

null
) {

childForm =


new



Articles
(); childForm.MdiParent =


this
; }

childForm.MdiParent =


this
; childForm.Show();

childForm.Focus();