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 :

Un problème d'évènement


Sujet :

VB.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 32
    Par défaut Un problème d'évènement
    Bonjour à tous
    Je m'arrache les cheveux (et il ne m'en reste pas beaucoup) sur un problème de gestion d’événement dans une classe.
    Ci-dessous le code simplifié de ma classe Data

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     public Class Data
        Private _id As Integer
        Private _titre As String
     
        Public Event ChangedData()
     
        ' Id
        Property Id As Integer
            Get
                Return _id
            End Get
            Set(value As Integer)
                _id = value
                RaiseEvent ChangedData()
            End Set
        End Property
     
        ' Titre
        Property Titre As String
            Get
                Return _titre
            End Get
            Set(value As String)
                If (value.Length > 10) Then
                    _titre = value.Substring(0, 10)
                Else
                    _titre = value
                End If
                RaiseEvent ChangedData()
            End Set
        End Property
    Cette classe est instanciée en tant que membre dans une nouvelle classe Element de type UserControl
    Ci-dessous le code la classe Element

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    Public Class Element
     
        Private _data As New Data
     
        ' Data
        Property Data As Data
            Get
                Return _data
            End Get
            Set(value As Data)
                _data = value
            End Set
        End Property
     
        ' Constructeur
        Public Sub New()
            InitializeComponent()
            Me.Width = 110
            Me.Height = 110
            AddHandler Data.ChangedData, AddressOf OnClickPouf
        End Sub
     
        ' OnClickPouf
        Private Sub OnClickPouf()
            MsgBox("Bingo")
        End Sub
     
    End Class
    Sur une Form je met un controle de type Element et dans le click du bouton je modifie la propriété "Titre" de Data par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Element1.Data.Titre = "Toto"
    Et la snif snif pas de trap sur OnClickPouf()

    Par contre si je mets dans la classe Data un controle quelconque (type label ou autre) et que je crée dans Element un AddHandler sur un évenement de ce controle, la par contre je "trap" bien sur OnClickPouf() lors du déclenchement de l'évènement.

    Je dois certainement passer à côté de quelque chose.

    Merci aux savants pour votre aide

    Philippe

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    est-ce que quelqu'un fait elementx.data = new data ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    Le problème en serait-il pas l'absence de WithEvents ?

    Sans cela, la classe susceptible de "capter" cet événement ne le fera pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Public Class Element
     
        Private WithEvents _data As New Data
     
        ' Data
        Property Data As Data
            Get
                Return _data
    Bonne journée,

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    Withevents n'est pas obligatoire (bien que recommandable) il n'existe d'ailleurs pas en c#
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 32
    Par défaut
    Bonsoir à tous
    Désolé de ne reprendre le fil de la discussion que maintenant mais grosse charge de boulot en ce moment.
    Alors j'ai des news sur cette histoire d’événements.
    Si le contrôle est positionné sur une form à partir de la boite à outils des composants et lors du lancement de l'application, la classe en question ne récupère pas les évents d'ou mon poste initial.
    Par contre si le contrôle est instancié par du code, là la classe récupère bien les events...c'est le plus important pour moi mais y a quelque chose qui m’échappe.
    Merci encore pour vos contributions
    Oldchap

Discussions similaires

  1. Problème d'événements sur un composant TChart
    Par 3nTiC dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/07/2006, 17h26
  2. Problème sur évènement d'une liste déroulante
    Par krfa1 dans le forum Access
    Réponses: 7
    Dernier message: 05/05/2006, 09h03
  3. Problème sur évènement
    Par Azharis dans le forum Access
    Réponses: 2
    Dernier message: 12/01/2006, 17h36
  4. Problème avec évènement ..
    Par questionneuse dans le forum Langage
    Réponses: 2
    Dernier message: 28/12/2005, 19h47
  5. Problèmes d'évènements sur ComboBox
    Par bakaneko dans le forum MFC
    Réponses: 3
    Dernier message: 23/02/2004, 09h46

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