Activer le menu approprié

cs_naylouvar Messages postés 37 Date d'inscription mardi 14 février 2006 Statut Membre Dernière intervention 4 mai 2010 - 27 avril 2008 à 20:01
cs_naylouvar Messages postés 37 Date d'inscription mardi 14 février 2006 Statut Membre Dernière intervention 4 mai 2010 - 29 avril 2008 à 18:50
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

Liverion Messages postés 296 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 18 août 2008
28 avril 2008 à 11:10
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
0
cs_naylouvar Messages postés 37 Date d'inscription mardi 14 février 2006 Statut Membre Dernière intervention 4 mai 2010
29 avril 2008 à 16:36
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
0
Liverion Messages postés 296 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 18 août 2008
29 avril 2008 à 16:42
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
;
0
cs_naylouvar Messages postés 37 Date d'inscription mardi 14 février 2006 Statut Membre Dernière intervention 4 mai 2010
29 avril 2008 à 16:53
meme avec
MdiParent.ne
wToolStripMenuItem.Enabled = true

newToolStripMenuItem n'est pas reconnu meme avec public.
Merci quand meme
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Liverion Messages postés 296 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 18 août 2008
29 avril 2008 à 16:55
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
0
cs_naylouvar Messages postés 37 Date d'inscription mardi 14 février 2006 Statut Membre Dernière intervention 4 mai 2010
29 avril 2008 à 17:02
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.
0
cs_naylouvar Messages postés 37 Date d'inscription mardi 14 février 2006 Statut Membre Dernière intervention 4 mai 2010
29 avril 2008 à 17:22
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
0
cs_naylouvar Messages postés 37 Date d'inscription mardi 14 février 2006 Statut Membre Dernière intervention 4 mai 2010
29 avril 2008 à 18:50
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();
0
Rejoignez-nous