begin process at 2008 07 23 23:31:04
1 215 377 membres
516 nouveaux aujourd'hui
14 174 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Activer desactiver le menu Fichier nouveau [ Windows / Formulaire / Winforms / Controls ] (naylouvar)

Activer desactiver le menu Fichier nouveau le 01/05/2008 08:12:33

naylouvar
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

privatevoid ShowNewForm(object sender, EventArgs e)

{

Articles childForm = newArticles();

foreach (Form frm in MdiChildren)

if ( frm isArticles ) {

childForm = (

Articles) frm;

break; }

elseif( childForm == null )
{

childForm =

newArticles();

childForm.MdiParent =

this;
}

childForm.MdiParent =

this;

childForm.Show();

childForm.Focus();

}

La solution sera  ça : si j'arrive à  acceder au  newToolStripMenuItem apartir de la fenetre  Articles qui est la fentetre enfante de MDIParent1

privatevoid Articles_Load(object sender, EventArgs e)

{

newToolStripMenuItem.Enabled =
false; }

si qlqn de vous à une idée je serai tres reconnaissant
merci.

Re : Activer desactiver le menu Fichier nouveau le 05/05/2008 09:55:32

Liverion
Bon , voila ce que je voulais dire dans ton sujet précédent :

Dans le code de ton MDI Parent tu ecris ces fonctions :

public void enableNewMenu ( )
{
    newToolStripMenuItem.Enable = true;
}

public void disableNewMenu ( )
{
    newToolStripMenuItem.Enable = false;
}



Et dans le code de ta fenetre enfant :

private void Articles_Load(object sender, EventArgs e)
{
    MdiParent.disableNewMenu();

}

private void Articles_Close(object sender, EventArgs e)
{
    MdiParent.enableNewMenu();
}


Normalement ca devrait fonctionner 

Re : Activer desactiver le menu Fichier nouveau le 05/05/2008 20:46:28

naylouvar
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


Re : Activer desactiver le menu Fichier nouveau le 06/05/2008 05:11:13

naylouvar

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:

MDIParent1
.newToolStripMenuItem = 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


Re : Activer desactiver le menu Fichier nouveau le 06/05/2008 09:52:32

Liverion
Tu peux mettre le code complet de tes 2 classes s'il te plait ? J'arrive pas a voir où ca peut bloquer avec juste ta fonction

Re : Activer desactiver le menu Fichier nouveau le 06/05/2008 23:04:22

naylouvar

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:

[ Lien ]

Merci une autre fois


Re : Activer desactiver le menu Fichier nouveau le 07/05/2008 09:58:43

Liverion
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 )

Re : Activer desactiver le menu Fichier nouveau le 08/05/2008 02:12:38

naylouvar
oui oui oui ça marche merci Liverion mille merci

Re : Activer desactiver le menu Fichier nouveau le 08/05/2008 02:20:19

naylouvar
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

Re : Activer desactiver le menu Fichier nouveau le 08/05/2008 09:35:35

Liverion
De rien, heureux d'avoir pu t'aider ^^






On peut écrire francais sur un clavier allemand , c'est juste plus long !!!


Classé sous : fichier, menu, desactiver, articles, childform

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS