Affichage d'un MenuItems

Signaler
Messages postés
121
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
20 mars 2009
-
Messages postés
121
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
20 mars 2009
-
Je vous expose mon problème.

J'ai une application avec des fenêtres Mdi.
Lors du chargement d'une fenêtre je construis un menu MenuItems qui comporte plusieurs sous menu qui représente un service.

Exemple :
Toto > Titi
> Tutu

Donc on peut voir que le service Toto a deux sous-services Titi et Tutu

A partir d'une autre fenêtre je peux ajouter un nouveau service à Toto, Tata par exemple.

Quand je retourne sur mon autre fenêtre, le menu se reconstruit automatiquement (dans l'évènement Activated).
Je fais donc un monMenu.MenuItems.Clear();
puis pour tous les éléments un monMenu.MenuItems.Add(...);

Le problème est le suivant : mon menu ne s'affiche plus du tout, alors que dans le debbug je vois bien qu'il est plein !!!
Je ne vois plus que
Toto >

C'est tout de même assez génant !

Quelqu'un aurait-il une idée sur la source de mon problème ?
Un problème de refresh ?

Merci d'avance

-=[JuS]=-

Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live

6 réponses

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
montre un peu le code de la methode associée à l'event Activated

Cocoricoooooooo !!!!
Messages postés
121
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
20 mars 2009
1
Alors toi t'as peur de rien !!! :o)

Voila juste la partie qui nous intéresse :
this.mciInterServ.MenuItems.Clear();
foreach(Service service in this.dicoService.getDictionnaire())
{
if(service.getIdPere().Equals(""))
{
MenuItem miServ = new MenuItem(service.getNom());
miServ.Click += new System.EventHandler(this.miServ_Click);
this.mciInterServ.MenuItems.Add(miServ);
this.createMenuService(service,1);

if(iCompteur != (Constantes.iESTIM_ENTITE + Constantes.iESTIM_SERVICE) - 1)
{
feuilleAttente.augmenterValueAttente(iCompteur);
iCompteur++;
}
}
}


La méthode "createMenuService" fait exactement la même chose que le code ci-dessus. C'est pour faire des appels récursifs.
En gros je cherche tous mes services de niveau 1 puis pour chaque service de niveau 1 trouvé, je recherche ses services de niveau 2 etc ...

-=[JuS]=-

Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
hum
c'est difficile de se replacer dans le contexte lol
par contre je ne vois pas pourquoi tu te retrouves avec seulement l'item de plus "haut niveau"
tu n'aurais pas un this.mciInterServ.MenuItems.Clear(); qui trainerais dans createMenuService ?

Cocoricoooooooo !!!!
Messages postés
121
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
20 mars 2009
1
Non, non ...
La voici la fameuse fonction.

private void createMenuService(Service servicePere,int iNiveau)
{
foreach(Service service in this.dicoService.getDictionnaire())
{
if(service.getIdPere().Equals(servicePere.getId()))
{
string sTabulation = "";

for(int i=0;i<iNiveau;i++)
{
sTabulation += "   ";
}

MenuItem miServ = new MenuItem(sTabulation + service.getNom());
miServ.Click += new System.EventHandler(this.miServ_Click);
this.mciInterServ.MenuItems.Add(miServ);
this.createMenuService(service,iNiveau+1);
}
}
}


J'ai fait un MenuItems.Count est il n'est jamais à 0, même quand ça ne s'affiche pas ...
Je comprends pas pourquoi ce fichu menu veut pas s'afficher ...

-=[JuS]=-

Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
ah je croyais que tu fesais des sous menus moi
enfin ça ne change rien
je ne vois vraiment pas ce qui pourrait clocher :(

Cocoricoooooooo !!!!
Messages postés
121
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
20 mars 2009
1
Bon ba merci quand même pour ton aide ...

Si jamais par le plus pur hasard je trouve, je marquerais la réponse.
En attendant le sujet reste ouvert ...

-=[JuS]=-

Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live