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 :

[usercontrol] accéder aux évènements d'un sous contrôle


Sujet :

VB.NET

  1. #1
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut [usercontrol] accéder aux évènements d'un sous contrôle
    Hello,

    Je développe un usercontrol et celui-ci contient un ContextMenuStrip.
    En mettant la propriété Modifiers de ce dernier sur Public, le projet qui utilisera le usercontrol pourra facilement éditer les propriétés de ce ContextMenuStrip à sa guise histoire de fournir des possibilité de personnalisation accrue.

    Mais comment faire pour, depuis le projet utilisant le usercontrol, accéder aux évènements du contextmenustrip ? Enfin, plus précisément, les évènements des items du contextmenustrip... Je pourrais les passer également en public mais ça n'aide pas des masses ^^.
    Kropernic

  2. #2
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Jamais essayé, mais ça pourrait être un truc du genre :

    dans l'UC tu crées des évènements publiques...

    Dans les "vraies évènements" du menu contextuel, tu RaiseEvent ceux-ci (un par élément).

    Et dans l'appli tu ajoutes un AddHandler des évènements (public) de ton uc.

    Comme un événement simple qu'on remonte de l'uc à une form... Mais déclenché par un événement.

    Qu'en penses tu ?
    Il y a peut être plus simple.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  3. #3
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Si le menu contextuel était fixe, je dis ok. C'est d'ailleurs la manière que j'utilise pour le moment histoire de pouvoir avancer et faire quelques tests.

    Mais vu que j'ai mis le menu en public, le dev peut le modifier en dehors de l'UC. Et donc je voudrais qu'il puisse s'abonner à l'event click d'un item qu'il ajouterait lui même... Sauf que ça, je ne vois pas comment faire ^^.

    N.B. : Au final, plus j'y réfléchis, plus je me dis que je vais fixer/bloquer le menu donc le problème ne se posera plus mais j'aimerais quand même savoir si c'est faisable ou pas.
    Kropernic

  4. #4
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Le sujet du post devrait être alors :

    Lier dynamiquement des événements (crées dynamiquement) d'un menu contextuel (crée dynamiquement par la form parent) appartenant à un UserControl

    T'aimes les défis toi !
    C'est cool que t'aies le temps au boulot ! lol
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  5. #5
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Citation Envoyé par mactwist69 Voir le message
    Le sujet du post devrait être alors :

    Lier dynamiquement des événements (crées dynamiquement) d'un menu contextuel (crée dynamiquement par la form parent) appartenant à un UserControl

    T'aimes les défis toi !
    C'est cool que t'aies le temps au boulot ! lol
    Tetete ! Le titre, c'est fait pour attiré le quidam.

    Après, y a le texte qui explique ce qu'on veut vraiment.

    Ca veut donc dire que t'as pas lu ce que j'ai écrit dans mon message d'ouverture ?

    La prochaine, je ferai une discussion avec juste le titre

    N.B. : J'ai un peu de temps car j'suis entre 2 projets et que je suis en attente d'infos pour le projet suivant qui n'arriveront pas avant le 24 août... Du coup, je développe des contrôles custom qui serviront bien un jour où l'autre. Là, je fais un calendrier/agenda où on peut ajouter des "rdv". Pour le moment, sur mon menu j'ai un item "Add timeframe" qui raise l'event du click et que j'utilise dans le projet qui utilise l'UC mais j'me disais que ce serait pas mal de rendre le menu dynamique pour pouvoir faire tout plein de truc selon l'envie du moment.
    Kropernic

  6. #6
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    C'est sur, avec un titre comme le mien, ça va pas attirer les foules...
    Technique de commercial sur le forum, lol.

    Mais de toute façon, ce genre de post n'aura certainement de réponses que d'un modo (ou de moi qui tente des pistes théoriques )

    NB : Ça à l'air super intéressant, et c'est cool de pouvoir "prendre" de l'avance. Moi j'ai que 6 mois de retard... (globalement, dans le service) ça va. Mais du coup, interdit de faire du technique si ça n'aide pas à finir le code pour hier.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  7. #7
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    J'ai toujours l'espoir qu'un tomlev s'ennuie et passe voir ou clique sur la discussion par erreur et lise quand même lol
    Kropernic

  8. #8
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Lol, c'est ce que j'allais dire.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  9. #9
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Soit j'ai pas compris ce que tu cherches à faire et je répond une fois de plus à coté de la plaque dans une de tes discussions.
    Soit c'est simple, j'ai fait un userControl avec un ContextMenu et j'ai mi le userControl dans form1 à la va vite, dans form1 le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     AddHandler UserControl11.ContextMenuStrip1.SystemColorsChanged, AddressOf MonTraitement
    fonctionne bien...

  10. #10
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    En fait, tu réponds en partie à la question ^^.

    Ce n'est pas aux events du contextmenu que je veux accéder mais à ceux des items du contextmenu.

    Le AddHandler était tellement évident que je n'y avais même pas pensé.

    Par contre, je viens de remarque une subtilité...

    Dans le contextmenu de mon UC, j'ai mis 3 items par défaut.
    Dans mon projet, j'ai retiré ces 3 items et mis 2 nouveau (en mode design).

    Au runtime, ce sont les 3 items par défaut qui sont présents... Il faut donc retirer les anciens et ajouter les nouveaux au runtime et pas au design. C'est un détail mais il faut le savoir (à moins qu'il y a un truc).

    A part ça, je pense qu'on peut passer le sujet en résolu.
    Kropernic

  11. #11
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Content d'être plus ou moins dans le bon pour une fois dans une de tes discussions

    Sinon à la création d'un item rien de difficile non plus de lier l’événement (voir code).
    Et pour défaire un comportement par défaut, utilise RemoveHandler (voir code), tu peux faire une méthode pour cela sur ton UserControl...

    Désolé pour le post vite fait mais je suis vraiment à la bourre là...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            Dim tsi = ContextMenuStrip1.Items.Add("test")
            tsi.Name = "test"
            AddHandler tsi.Click, AddressOf testClick
     
            Me.ContextMenuStrip = ContextMenuStrip1
        End Sub
     
        Private Sub testClick(sender As Object, e As EventArgs)
            MsgBox("test")
            RemoveHandler ContextMenuStrip1.Items("test").Click, AddressOf testClick
        End Sub

  12. #12
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Citation Envoyé par Sankasssss Voir le message
    Sinon à la création d'un item rien de difficile non plus de lier l’événement (voir code).
    Et pour défaire un comportement par défaut, utilise RemoveHandler (voir code), tu peux faire une méthode pour cela sur ton UserControl...
    Euh... j'ai pas posté de code mais le [Add/Remove]Handler, je maitrise hein ^^.

    N.B. : En règle générale, j'essaie de poster le moins de code possible car je préfère exprimer ce qu'il faut faire en français plutôt qu'en code. Ca permet de s'assurer qu'on a bien compris ce qu'on veut et ça évite de poster du code éventuellement non testé qu'un autre ira copier/coller pour venir ensuite se plaindre que ça ne fonctionne pas
    Kropernic

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Accéder aux événements d'un contrôle hébergé dans un FormHost
    Par Calimero97224 dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 28/04/2014, 14h16
  2. [AC-2003] Accéder aux données d'un sous état
    Par chinchero dans le forum IHM
    Réponses: 1
    Dernier message: 25/05/2011, 22h08
  3. Réponses: 2
    Dernier message: 26/11/2009, 14h00
  4. Problèmes pour accéder aux tags de fichiers sous windows xp
    Par clakinette dans le forum Windows XP
    Réponses: 1
    Dernier message: 14/08/2008, 17h18
  5. Accéder aux données d'un sous formulaire
    Par jkembo dans le forum Access
    Réponses: 6
    Dernier message: 28/04/2006, 16h38

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