本帖最后由 yongzhoujuan 于 2012-06-06 17:09:28 编辑

解决方案 »

  1.   


    if (m.Msg >= 0x0201 && m.Msg <= 0x0209)
    {
        Point pMouse = this.PointToClient(MousePosition);
        Point pCalendar = monthCalendar1.Location;
        if (!(pMouse.X > pCalendar.X && pMouse.X < (pCalendar.X + monthCalendar1.Width) && pMouse.Y > pCalendar.Y && pMouse.Y < (pCalendar.Y + monthCalendar1.Height)))
        {
            monthCalendar1.Visible = false;
        }
    }我觉得没必要用消息吧,在窗体的MouseClick事件里写就好了this.MouseClick += new MouseEventHandler((sender, e) => 

        if (e.Button == MouseButtons.Left)
        {
            Point pMouse = e.Location;
            Point pCalendar = monthCalendar1.Location;
            if (!(pMouse.X > pCalendar.X && pMouse.X < (pCalendar.X + monthCalendar1.Width) && pMouse.Y > pCalendar.Y && pMouse.Y < (pCalendar.Y + monthCalendar1.Height)))
            {
                monthCalendar1.Visible = false;
            }
        }
    });