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] Remontée d'évènements


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Inscrit en
    Mai 2003
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 58
    Points : 70
    Points
    70
    Par défaut [VB.NET] Remontée d'évènements
    Je n'arrive pas à récupérer les events générés par des Classes enfants.

    Un exemple simplifié que j'espère assez clair:

    Jai un Formulaire FormAffichage, une Classe Metier SourceClass et une classe Calcul CalculClass

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Class FormClass
      Public WithEvents Source As new SourceClass
    End Class
     
    Public Class SourceClass
      Public WithEvents Calcul As New CalculClass
    End Class
     
    Public Class CalculClass
      Public Event CalculProgressEvent
    End Class
    Par exemple Calcul Class déclenche l'évènement CalculProgressEvent chaque fois qu'un traitement est effectué.
    je voudrais récupérer l'event dans le FormClass pour afficher une progression mais je n'y parviens pas.
    Le formulaire ne veut pas entendre parler de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Source.Calcul.CalculProgressEvent
    Si je zappe la CalculClass et que l'event est déclenché par SourceClass tout fonctionne trés bien.
    Mais je n'arrive pas à récupérer l'évent dans la Class Source ce qui permettrait de générer un event en cascade.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public SourceClass
      Public Sub Calcul_Event() Handles Calcul.ProgressCalculEvent
        RaiseEvent me.CalculProgressEvent
      End Sub
    End Class
    Est compilé sans problème mais ne se déclenche jamais.
    Il est possible de definir une Property Compteur dans la SourceClass qui déclenche un event Dans le formulaire, mais la Classe CalculClass n'a aucune visibilité sur la Classe SourceClass et ne voit pas cette propriétée...

    Y-at-il un moyen de résoudre ce problème qui consiste à récupérer au niveau de la classe Parent des events déclenchés par des classes enfants ?
    Faut il mettre un délégué dans la classe Parent qui déclenche l'évènement et faire pointer le déclencheur d'évènement de la classe enfant vers ce délégué ?
    J'ai le meme problème pour le DataBinding avec des Classes enfants: je ne parviens pas à répercuter les modifications de Classes enfants dans les formulaires Liés.

  2. #2
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    Salut

    je suis pas sur d'avoir parfaitement saisi mais il faut chainer tes evenements

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Public SourceClass
      Public WithEvents Calcul As New CalculClass 
      Public Event ProgressSourceCalcul
      Public Sub Calcul_Event() Handles Calcul.ProgressCalculEvent
        RaiseEvent me.ProgressSourceCalcul
      End Sub
    End Class

  3. #3
    Membre régulier
    Inscrit en
    Mai 2003
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 58
    Points : 70
    Points
    70
    Par défaut
    Oui Piotrek, c'est exactement ce qu'il me faudrait pour faire remonter l'évènement.
    Le code est compilé sans problème, mais l'event ProgressCalculEvent ne déclenche pas d'évènement dans la SourceClass.
    Les évènements semble ne se déclencher que dans les formulaires...
    Est ce que la classe doit implémenter une Interface pour que les évènements se déclenchent ? Est-ce que ca doit marcher comme ça et que je délire ?

  4. #4
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    Bin je viens de tester ce que tu veux faire (a tout hasard on est jamais sur)

    Ca marche tres bien

    Mets des points d'arret, reverifie ton code, simplifie le... debug!

  5. #5
    Membre régulier
    Inscrit en
    Mai 2003
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 58
    Points : 70
    Points
    70
    Par défaut
    Arf, désolé de t'avoir fait bosser pour rien, tu as raison ca fonctionne parfaitement.
    Mon code est trés compliqué et il doit y avoir un problème de visibilité qque part...
    Encore Merci

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

Discussions similaires

  1. [C#]Remonter des événements dans des classes imbriquées
    Par Kcirtap dans le forum Windows Forms
    Réponses: 9
    Dernier message: 14/12/2013, 12h43
  2. Réponses: 6
    Dernier message: 18/08/2006, 10h22
  3. [VB.NET]Tester un évènement
    Par waniiya dans le forum Windows Forms
    Réponses: 9
    Dernier message: 03/07/2006, 15h11
  4. [VB.NET]Génération d'événement
    Par Franckintosh dans le forum VB.NET
    Réponses: 10
    Dernier message: 03/11/2005, 11h34
  5. [VB.NET] Déclenchement d'évènement d'un TextBox
    Par leSeb dans le forum Windows Forms
    Réponses: 11
    Dernier message: 08/10/2004, 11h40

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