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
Cette classe est instanciée en tant que membre dans une nouvelle classe Element de type UserControl
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
Ci-dessous le code la classe Element
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
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
Et la snif snif pas de trap sur OnClickPouf()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2Element1.Data.Titre = "Toto"
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
Partager