aller j'ai tenté un petit exemple
dans une classe StringWithEvents
Public Class StringWithEvents
'membre
Private mValue As String
'évènements
Public Event BeforeChanged(ByRef Cancel As Boolean)
Public Event Changed()
Public Event ChangeCanceled()
'propriété
Public Property Value() As String
Get
Return mValue
End Get
Set(ByVal value As String)
If Not (value = mValue) Then 'ELSE pareil : donc pas de changement
Dim bCancel As Boolean = False
RaiseEvent BeforeChanged(bCancel)
If bCancel Then
'a été annulé
RaiseEvent ChangeCanceled()
Else
'on change
mValue = value
RaiseEvent Changed()
End If
End If
End Set
End Property
'constructeurs
Public Sub New()
mValue = String.Empty
End Sub
Public Sub New(ByVal sValue As String)
mValue = sValue
End Sub
End Class
exemple d'utilisation, Form2 , 2 boutons
Public Class Form2
Private WithEvents VarString As StringWithEvents
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
VarString = New StringWithEvents("default")
End Sub
Private Sub VarString_BeforeChanged(ByRef Cancel As Boolean) Handles VarString.BeforeChanged
Cancel (MessageBox.Show("VarString_BeforeChanged, accepter la modif?", "Changement value, actuelle " & VarString.Value, MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.No)
End Sub
Private Sub VarString_ChangeCanceled() Handles VarString.ChangeCanceled
MessageBox.Show("VarString_ChangeCanceled")
End Sub
Private Sub VarString_Changed() Handles VarString.Changed
MessageBox.Show("VarString_Changed")
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
VarString.Value = System.DateTime.Now.ToString
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
MessageBox.Show("valeur actuelle = " & VarString.Value)
End Sub
End Class
++
[hr]