IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Cloner un MenuStrip


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Points : 106
    Points
    106
    Par défaut Cloner un MenuStrip
    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

  2. #2
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    La méthode Clone ? ou en cas d'échec faire une fonction récursive pour le faire ?

  3. #3
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Points : 106
    Points
    106
    Par défaut
    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

  4. #4
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    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 ...

  5. #5
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Points : 106
    Points
    106
    Par défaut
    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

  6. #6
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    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 ...

  7. #7
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Points : 106
    Points
    106
    Par défaut
    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

  8. #8
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Citation Envoyé par David Fouejio Voir le message
    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.
    aie aie, là c'est pas cool ... tu n'as pas accès à la dll ?!

    Ou un truc genre
    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
    Et le faire récursivement pour les sous menus ...

  9. #9
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Points : 106
    Points
    106
    Par défaut
    c'est ce que je voulais éviter

Discussions similaires

  1. [DOM] Cloner un tableau avec DOM
    Par zwck dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 05/10/2005, 22h26
  2. Cloner un objet : comment créer l'instance ?
    Par phplive dans le forum Langage
    Réponses: 8
    Dernier message: 29/05/2005, 18h27
  3. Comment cloner un dataset en delphi
    Par laurent82 dans le forum Bases de données
    Réponses: 2
    Dernier message: 18/06/2004, 10h41
  4. [C#] Comment cloner en c#
    Par borgfabr dans le forum Windows Forms
    Réponses: 6
    Dernier message: 28/04/2004, 12h00
  5. Comment cloner un composant
    Par totoranky dans le forum Composants
    Réponses: 2
    Dernier message: 12/04/2003, 15h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo