protected override void OnLeave(EventArgs e)
{
// We need to hide the window after the current windows message has been processed and
// during its operation. Doing so can cause problems with the mouse down not working when
// that is the cause of the leave event. Plus the focus might enter here again before the
// next windows message.
if (IsHandleCreated)
BeginInvoke(_checkMakeHidden);
base.OnLeave(e);
}