static object MouseLeftButtonDownEvent = new object (); public event MouseEventHandler MouseLeftButtonDown { add { if (events[MouseLeftButtonDownEvent] == null) Events.AddHandler ("ButtonPress", this); events.AddHandler (MouseLeftButtonDownEvent, value); } remove { bool before = (events[MouseLeftButtonDownEvent] != null); events.RemoveHandler (MouseLeftButtonDownEvent, value); bool after = (events[MouseLeftButtonDownEvent] == null); if (before && after) Events.RemoveHandler ("ButtonPress", this); } }