Другой подход заключается в реализации какого-то шаблона наблюдателя , в C # его легко реализовать с помощью делегатов . Сначала создайте делегата с нужной вам подписью, затем включите событие вашего типа делегата, а затем вызовите событие, когда произойдет управляющее событие вашего пользователя. Каждый раз, когда вы создаете экземпляр вашего Usercontrol, ассоциируйте объявленное вами событие с каким-либо методом (наблюдателем) на вашем клиенте (в соответствии с подписью вашего делегата).
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 */
}
}