Bonjour à tous
Je voudrais cloner la structure des menus d'un MenuStrip
Est ce que quelqu'un a une idée
Merci d'avance de tout aide
Bonjour à tous
Je voudrais cloner la structure des menus d'un MenuStrip
Est ce que quelqu'un a une idée
Merci d'avance de tout aide
La méthode Clone ? ou en cas d'échec faire une fonction récursive pour le faire ?
La méthode Clone n'existe pas
Il y a une méthode MemberwiseClone protégée qui d'après MSDN fait une copie surperficielle.
Mon problème est le suivant : nous avons développé un module sécurité qui applique les privlèges de l'utilisateur qui se connecte à notre application.
Nous voudrions qu'en cas d'échec le menu par exemple soit retabli tel quel.
Pour cela je pense qu'il faut le copier intégralement
Si c'est un menu qui dépend de l'utilisateur, de ses droits et compagnie, j'aurai pas pensé à faire une copie du menu mais plutôt à le construire de manière dynamique.
Par exemple, une classe User qui contient les différents menus et si ça passe on rajoute le menu (machin.DropDownItems.Add(...)), sinon on ne fait rien ou on recharge le menu à partir d'une autre source ...
Le clonage du menu est la meilleur solution pour mon problème car j'ai deux scénarios :
- j'ai dois garder une copie du menu initial au démarage de l'application,
- je dois garder la copie du menu en cours lorsqu'un utilisateur change de
session ou un utilisateur différent se connecte à partir d'une session
ouverte par un autre.
Si on chargeait le menu à partir d'un fichier de ressource comme en C++ le problème ne se poserait pas
Et le menu principal tu le charges comment ? via le designer ?
Tu peux très bien le faire à la main et ça te donnerai le contrôle total sur le contenu du menu pour en faire ce que tu veux ...
J'ai dis que si on pouvait charger le menu à partir d'une ressource comme en C++.
Le module qui applique les privilèges sur les menus se trouve dans une DLL et sa fonction d'initialisation prend comme paramètre le Form contenant le MainMenuStip.
Il n'a donc pas accès au designer
aie aie, là c'est pas cool ... tu n'as pas accès à la dll ?!
Ou un truc genre
Et le faire récursivement pour les sous menus ...
Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 System.Windows.Forms.MenuItem machin = ... var machin_copy = new System.Windows.Forms.MenuItem(); machin_copy.Text = machin.Text; machin_copy.Enabled = machin.Enabled; machin_copy.Click += delegate { machin.PerformClick(); }; //etc
c'est ce que je voulais éviter
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager