En dehors de votre classe LabelX, créez la classe suivante:
public class MassChangedEventArgs : EventArgs
{
public float Mass { get; private set; }
public MassChangedEventArgs(float mass)
{
this.Mass = mass;
}
}
également en dehors de votre classe LabelX, créez le délégué suivant. Ce sera votre gestionnaire d'événement.
public delegate void MassChangedEventHandler(object sender, MassChangedEventArgs e);
Au sein de votre classe LabelX, créer un événement pour diffuser:
public class LabelX
{
public event MassChangedEventHandler MassChanged;
//the rest of your code here...
}
Vous aurez également besoin de créer une méthode d'instance privée qui déclenche votre événement. Enfin, lorsque votre propriété Mass change, appelez OnMassChanged. Par exemple:
public class LabelX
{
private float mass;
public float Mass
{
get
{
return mass;
}
set
{
mass = value;
OnMassChanged();
}
}
public event MassChangedEventHandler MassChanged;
private void OnMassChanged()
{
if(MassChanged!=null)
this.MassChanged(this, new MassChangedEventArgs(this.Mass));
}
//the rest of your code here...
}
Lorsque vous voulez gérer cet événement sur une base par exemple, il vous suffit d'enregistrer un écouteur à l'événement MassChanged de votre objet sous-jacent et effectuer toutes les actions nécessaires.
Voulez-vous lancer une exception? Vous ne voudriez pas vous inscrire à un événement pour déterminer l'échec. –
je veux déclencher un événement comme text_change dans l'étiquette –
Droit mais si je suis le consommateur, je ne devrais pas avoir à enregistrer pour un événement modifié pour déterminer l'échec lors de la définition d'une propriété. Vous devriez lancer une exception dans le setter de la propriété ... new ArgumentOutOfRangeException ("La valeur doit être supérieure à zéro") par exemple ... –