Skip to content

Instantly share code, notes, and snippets.

@Fhernd
Created June 5, 2014 23:33
Show Gist options
  • Save Fhernd/db3473cf3643ce3c0b32 to your computer and use it in GitHub Desktop.
Save Fhernd/db3473cf3643ce3c0b32 to your computer and use it in GitHub Desktop.
Mecanismo de almacenamiento interno para eventos.
class Control : Component
{
// Claves únicas eventos:
static readonly object mouseDownEventKey = new object();
static readonly object mouseUpEventKey = new object();
// Recupera un manejador de eventos. El menajedor recuperado
// está asociado con una clave
protected Delegate ObtenerEventHandler(object key){ ... }
// Agrega un menajedor de eventos:
protected void AgregarEventHandler(object key, Delegate handler) { ... }
// Remuee un menejador de eventos:
protected void RemoverEventHandler(object key, Delegate handler) { ... }
// Evento de movimiento de mouse MouseDown
public event MouseEventHandler
{
add
{
AgregarEventHandler(mouseDownEventKey, value);
}
remove
{
RemoverEventHandler(mouseDownEventKey, value);
}
}
// Evento de movimiento de mouse MouseUp:
public event MouseEventHandler MouseUp
{
add
{
AgregarEventHandler(mouseUpEventKey, value);
}
remove
{
RemoverEventHandler(mouseUpEventKey, value);
}
}
// Invocación del evento MouseUp:
protected void OnMouseUp(MouseEventArgs args)
{
MouseEventHandler handler;
handler = (MouseEventHandler) ObtenerEventHandler(mouseUpEventKey);
if (handler != null)
{
handler(this, args);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment