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 :

[VB.NET]evenement sur un controle ajouté par code


Sujet :

Windows Forms

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : novembre 2005
    Messages : 876
    Points : 484
    Points
    484
    Par défaut [VB.NET]evenement sur un controle ajouté par code
    Bonjour,


    J'ai dans un formulaire un flowLayoutPanel créé avec le designer.

    J'y ajoute un nombre variable d'instances d'un userControl par code (donc à l'exécution). A l'exécution, je vois bien mes différentes occurences de mon userControl (ce sont des adresses).

    Je voudrais pouvoir créer un "simple" événement click sur chacune de mes adresses de mon flowLayoutPanel.

    Quelqu'un peut-il m'aider ?

    Merci

  2. #2
    Membre éprouvé
    Avatar de HULK
    Inscrit en
    juillet 2003
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : juillet 2003
    Messages : 1 254
    Points : 1 272
    Points
    1 272
    Par défaut
    il faut utiliser WithEvents dans don Dim il me semble

    http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/vblr7/html/vakeyWithEvents.asp
    j'suis vert !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : novembre 2005
    Messages : 876
    Points : 484
    Points
    484
    Par défaut
    Merci pour ta réponse.

    Je ne peux malheureusement déclarer une variable avec WithEvents

    'WithEvents' is not valid on a local variable declaration
    au niveau local. Or comme j'ai un nombre variable d'instances je ne vais pas en déclarer un nombre limité au niveau du formulaire, car je risquerais de devoir dépasser ce nombre.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : novembre 2005
    Messages : 876
    Points : 484
    Points
    484
    Par défaut
    Apparement, je dois plutôt m'orienter vers AddHandler.

    Je cherche, mais si quelqu'un a des exemples, il est le bienvenu...

  5. #5
    Membre régulier
    ingénieur informaticien
    Inscrit en
    novembre 2005
    Messages
    114
    Détails du profil
    Informations professionnelles :
    Activité : ingénieur informaticien

    Informations forums :
    Inscription : novembre 2005
    Messages : 114
    Points : 103
    Points
    103
    Par défaut
    Renseigne la méthode click de tes controle dynamiques

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : novembre 2005
    Messages : 876
    Points : 484
    Points
    484
    Par défaut
    DonF a écrit:

    Renseigne la méthode click de tes controle dynamiques
    Peux-tu être un peu plus explicite ?

  7. #7
    Membre régulier
    ingénieur informaticien
    Inscrit en
    novembre 2005
    Messages
    114
    Détails du profil
    Informations professionnelles :
    Activité : ingénieur informaticien

    Informations forums :
    Inscription : novembre 2005
    Messages : 114
    Points : 103
    Points
    103
    Par défaut
    Est ce que ton usercontrol dispose d'une méthode click? Si oui, c'est là que tu doit implementer le code à exécuter. Sinon tu peux toujours rajouter cette methode.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : novembre 2005
    Messages : 876
    Points : 484
    Points
    484
    Par défaut
    Oui, je peux gérer l'événement "Click" de mon UserControl. Si je clique sur le nom d'une adresse, j'ai par exemple un messageBox "monNom" qui apparait. Mais je ne veux pas déclencher un événement au niveau du user control mais bien dans le formulaire qui gère mon flowLayoutPanel.

    Je voudrais donc pouvoir cliquer sur la première instance de mon userControl dans mon flowLayoutPanel et recevoir un msgbox "Vous avez cliqué sur UsrCtrl1"...

  9. #9
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : juin 2002
    Messages : 1 309
    Points : 1 033
    Points
    1 033
    Par défaut
    Fait comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim LB as new label
    AddHandler LB.Click, AddressOf LB_Click
    Et plus bas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub LB_Click(sender,e)
    '
    End Sub

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : novembre 2005
    Messages : 876
    Points : 484
    Points
    484
    Par défaut
    Pour la gestion du click, ça fonctionne !

    J'ai malheureusement encore deux "Hics"

    1° Je m'attendais à ce que quand je clique n'importe ou sur mon user Control, j'ai le message. Je dois en fait cliquer à un endroit (vide) ou je n'ai pas de labels( et ils sont très petits ces endroits)

    2° Dès le moment ou j'ai un nombre variable de UserControls qui viennent sur mon FlowLayoutPanel. Comment puis-je générer les handler dans une boucle ?

  11. #11
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : juin 2002
    Messages : 1 309
    Points : 1 033
    Points
    1 033
    Par défaut
    Citation Envoyé par Golzinne
    1° Je m'attendais à ce que quand je clique n'importe ou sur mon user Control, j'ai le message. Je dois en fait cliquer à un endroit (vide) ou je n'ai pas de labels( et ils sont très petits ces endroits)
    Pour ça je ne vois pas d'autre solution que de modifier ton usercontrol de base:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Event OnMaClike(sender,e)
    Dans l'evenement click du usercontrol ainsi que dans l'évènement Click de chaque Label à l'intérieur du user control:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RaiseEvent OnMaClike(Me,new e)
    Citation Envoyé par Golzinne
    2° Dès le moment ou j'ai un nombre variable de UserControls qui viennent sur mon FlowLayoutPanel. Comment puis-je générer les handler dans une boucle ?
    Fais comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim US as UserControl1
    For i = 1 to nbUserControlACreer
        UC = New UserControl1
        AddHandler UC.OnMaClicke, AddressOf LB_Click
    Next
    Et plus bas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub LB_Click(sender,e)
    '
    End Sub

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : novembre 2005
    Messages : 876
    Points : 484
    Points
    484
    Par défaut
    Grâce à toi, je sens que j'approche...

    Pour le point 1° dans

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RaiseEvent OnMaClike(Me,new e)
    le (Me, new e) ne fonctionne pas, il ne me propose pas le "e". (Si je met pas le new, je peux l'écrire mais alors ça ne marche pas)

    Peut-être dois-je faire un import de quelque chose ?

    Pour le point 2° j'arrives à créer mes userControls dans une boucle, mais si je met

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub LB_Click(sender,e) 
    msgbox(sender.toString)
    End Sub
    je reçois, quel que soit le userControl cliqué:
    WindowsControlLibrary1.AdresseUserCtrl
    c'est à dire, et ça me parait normal, que comme je n'ai qu'un événement pour tous mes contrôles, je reçois le même message. y-a-t'il moyen de récupérer le nom ou l'objet qui a déclenché l'événement ?

  13. #13
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : juin 2002
    Messages : 1 309
    Points : 1 033
    Points
    1 033
    Par défaut
    excuse moi, j'ai mis new e pour abréger:
    il faut traduire : new system.eventargs ou qqc dans le genre ( regarde la signature de n'importe quel click )

    de même pour :
    Private Sub LB_Click(sender,e)
    traduire par :
    Private Sub LB_Click(sender as object ,e as system.eventargs)

    Ensuite pour afficher le nom d'un usercontrol :
    Sender désigne bien ton usercontrol mais sender est de type Object donc tu ne peux pas atteindre la propriété "Name".
    Pour y remédier tu fais ça :

    Dim UC as LeTypeDeTonUserControl = sender

    Et maintenant tu dois pouvoir atteindre UC.Name

    voila

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : novembre 2005
    Messages : 876
    Points : 484
    Points
    484
    Par défaut
    Pour le 1°

    merci pour ta précision, j'ai complété et ca fonctionne !

    J'ai juste du mettre Public mon événement .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Event OnMaClike(sender,e)
    Pour le 2°

    Ca marche super

    Pour le tout je dis et
    tu as une faculté étonante de comprendre les problèmes surtout d'y apporter les bonnes solutions.

    Encore merci

  15. #15
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : juin 2002
    Messages : 1 309
    Points : 1 033
    Points
    1 033
    Par défaut
    Merci ça fait plaisir.
    Ce sont des problèmes que j'ai eu donc je vois bien comment répondre pour t'aider!

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

Discussions similaires

  1. [XL-2003] evenement sur un classeur ouvert par une macro
    Par cecyl dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/08/2010, 11h39
  2. Evenement sur sous-menu ajoutés onLoad
    Par lpldtrllt dans le forum Windows Forms
    Réponses: 1
    Dernier message: 07/03/2010, 13h22
  3. Réponses: 2
    Dernier message: 02/08/2006, 23h54
  4. [VB NET]: Evenement sur Winform: "sur réduction"
    Par ADONET dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/02/2006, 11h52
  5. Réponses: 6
    Dernier message: 18/04/2005, 21h12

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