Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. class Control : Component
  2. {
  3.     // Claves únicas eventos:
  4.     static readonly object mouseDownEventKey = new object();
  5.     static readonly object mouseUpEventKey = new object();
  6.    
  7.     // Recupera un manejador de eventos. El menajedor recuperado
  8.     //  está asociado con una clave
  9.     protected Delegate ObtenerEventHandler(object key){ ... }
  10.    
  11.     // Agrega un menajedor de eventos:
  12.     protected void AgregarEventHandler(object key, Delegate handler) { ... }
  13.    
  14.     // Remuee un menejador de eventos:
  15.     protected void RemoverEventHandler(object key, Delegate handler) { ... }
  16.    
  17.     // Evento de movimiento de mouse MouseDown
  18.     public event MouseEventHandler
  19.     {
  20.         add
  21.         {
  22.             AgregarEventHandler(mouseDownEventKey, value);
  23.         }
  24.         remove
  25.         {
  26.             RemoverEventHandler(mouseDownEventKey, value);
  27.         }
  28.     }
  29.    
  30.     // Evento de movimiento de mouse MouseUp:
  31.     public event MouseEventHandler MouseUp
  32.     {
  33.         add
  34.         {
  35.             AgregarEventHandler(mouseUpEventKey, value);
  36.         }
  37.         remove
  38.         {
  39.             RemoverEventHandler(mouseUpEventKey, value);
  40.         }
  41.     }
  42.    
  43.     // Invocación del evento MouseUp:
  44.     protected void OnMouseUp(MouseEventArgs args)
  45.     {
  46.         MouseEventHandler handler;
  47.        
  48.         handler = (MouseEventHandler) ObtenerEventHandler(mouseUpEventKey);
  49.        
  50.         if (handler != null)
  51.         {
  52.             handler(this, args);
  53.         }
  54.     }
  55. }