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

VB.NET Discussion :

Duplication de ContextMenuStrip


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 299
    Par défaut Duplication de ContextMenuStrip
    Bonjour à toutes et à tous

    J'ai un treeview dans lequel les noeuds sont dans 3 états possibles. A chaque TreeNode est associé un ContextMenuStrip commun (un seul pour le treeview) qui comporte donc 3 items, le but étant de changer l'état du noeud par un autre état.
    Dans la réalité, mon nombre d'états est élevé et surtout le nombre de noeuds est susceptible d'être assez élevé.

    Je souhaite éviter de changer l'état du noeud par son état initial, ce qui se traduit par la volonté de griser (propriété Enabled) l'item du contextmenustrip associé.

    Ca parait simple à faire mais je coince un max du fait d'un fonctionnement par référence et pas par valeur du ContextMenuStrip

    En effet, si je grise un item, celà va impacter l'affichage du contextmenustrip pour les autres noeuds. J'ai donc voulu fouiner du côté du clonage d'objet (IClonable) mais je n'ai pas trouvé de réponse à ma question adaptée à ce compo.

    J'ai voulu créer une fonction de ce type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Function DuplicateCMS(Byref mypCms As ContextMenuStrip) As ContextMenuStrip
    	Dim MyCms As New ContextMenuStrip			
    	MyCms.items.AddRange(mypCms.Items)
    	Return MyCms
    ...
    Le but étant d'avoir un contextmenustrip 'initial' (aucun item grisé) et un contextmenustrip adapté au noeud lorsqu'il est affiché.

    Et bien, à ma grand stupefaction, celà génère une exception d'index car il semble que chaque fois qu'un item.addrange (ou .add dans une boucle for/each) est appelé, le nombre d'items de la source (ici MypCms) est décrémenté d'autant (un peu comme si c'était un move et pas une copie) !

    Est ce que quelqu'un à une idée sur la façon de résoudre ce gros problème existentiel ?
    Merci par avance de vos réponses.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 299
    Par défaut
    Bien, vu que le sujet n'a pas passionné les foules , j'ai abandonné toute idée de duplication pour implémenter une autre solution qui se contente lorsque le contextmenustrip se ferme, de lister l'ensemble des items disabled pour les remettre en enabled.

    Il semblerait que la sérialisation soit une des alternatives mais je ne sais si celà d'appliquerait aux events de click associés à chaque menuitem.

    L'histoire du add d'index qui fait en même temps un remove est signalée sur msdn (sont fort quand même...).

  3. #3
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Pourquoi n'ajuste tu pas ton menu dans l'event Opening ?

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 299
    Par défaut
    La solution actuelle est effectivement d'ajuster (en grisant les items voulus) le menu dans l'event opening et de dégriser dans l'event Closed et cela fonctionne bien.

    Je m'étais dit initialement qu'une façon plus "objet" de procéder consistait à définir un ContextMenuStrip initial et de réaffecter le contextmenustrip du noeud concerné à ce ContextMenuStrip initial lors de l'event Closed d'où l'objet de ma demande de duplication.

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par nikoko34 Voir le message
    Je m'étais dit initialement qu'une façon plus "objet" de procéder consistait à définir un ContextMenuStrip initial et de réaffecter le contextmenustrip du noeud concerné à ce ContextMenuStrip initial lors de l'event Closed d'où l'objet de ma demande de duplication.
    Ben, ca revient à créer des instances suplémentaires pas vraiment utile, alors que tu n'en utilises qu'une à la fois.

    Moi l'Opening, ça me convient très bien

Discussions similaires

  1. Duplication objet
    Par John Fullspeed dans le forum Composants VCL
    Réponses: 7
    Dernier message: 11/09/2004, 23h00
  2. #1062 - Duplicate entry
    Par Spaccio dans le forum Débuter
    Réponses: 6
    Dernier message: 02/06/2004, 11h18
  3. Message 'Duplicate index entry'
    Par Poulou dans le forum Administration
    Réponses: 13
    Dernier message: 04/05/2004, 14h57
  4. [INTERBASE]Fonction UDF et Duplication ???
    Par Sitting Bull dans le forum InterBase
    Réponses: 6
    Dernier message: 15/12/2003, 08h40
  5. [jsp] Error #: 482 : duplicate definition of class
    Par antigone dans le forum JBuilder
    Réponses: 4
    Dernier message: 24/07/2003, 10h18

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