Une autre approche consiste à mettre en œuvre une sorte de modèle d'observateur, en C#, il peut être facilement mis en œuvre à l'aide délégués. Commencez par créer un délégué ayant la signature souhaitée, puis ajoutez un événement de votre type de délégué, puis augmentez l'événement lorsque l'événement de contrôle de votre utilisateur se produit. Chaque fois que vous créez une instance de votre Usercontrol, associez l'événement que vous avez déclaré avec une méthode (l'observateur) sur votre client (correspondant à la signature de votre délégué).
public delegate void MyUserControlEvent(UserControl control, object sender, EventArgs e);
public partial class MyUserControl : UserControl
{
public event MyUserControlEvent TheEvent;
private void TimerFecha_Tick(object sender, EventArgs e)
{
if (TheEvent != null) { TheEvent(this, sender, e); }
}
}
public partial class SomeClient : SomeBase
{
public SomeClient()
{
MyUserControl control = new MyUserControl();
control.TheEvent = TheListenerProcedure;
}
public void TheListenerProcedure(UserControl control, object sender, EventArgs e)
{
/* IMPLEMENT LOGIC HERE */
}
}
Une minuterie ne passe pas de temps et n'a pas de «valeur». Il fait juste un événement avec son événement Tick. –
Mon mauvais, je ne l'ai pas précisé - je l'appelle une minuterie, mais c'est juste une valeur DateTime qui est calculée comme la différence entre lorsque vous cliquez sur un Start et un Stop :) – Aidenn