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