是这样的,我准备弄一个MonthCalendar,这个MonthCalendar是和一个TextBox相关联的,也就是说,当点击MonthCalendar的一个日期时,TextBox就会显示该日期,但是吧,现在出现了一个问题,我想在选择完日期后,就隐藏掉MonthCalendar,于是,我就监听了DateSelected事件,每次DateSelected后,我就隐藏掉MonthCalendar,可是我发现在你在MonthCalendar上调整月份以选择日期时,也会触发DateSelected事件,于是每次换月份,MonthCalendar都会隐藏点,谁能帮忙想个办法,让他在鼠标没点击日期前不隐藏,谢谢了

解决方案 »

  1.   

    不知 DateTimePicker 控件能否满足你的要求
      

  2.   

    试一试:MonthCalendar.DateChanged 事件http://msdn.microsoft.com/zh-cn/library/system.windows.forms.monthcalendar.datechanged(v=vs.80).aspx
      

  3.   

    可以在DateSelected事件里面添加判断如果是调整月份就不隐藏。
      

  4.   

    用Ajax Tool Kit中提供的Calendar
      

  5.   

    DateTimePicker ,和textbox放重叠,textbox显示顺序在前,DateTimePicker 的ValueChanged事件
      

  6.   

    楼上说的对,用DateTimePicker就能实现你的要求。如果一定要使用MonthCalendar,需要使用HitTest方法判断鼠标点击的位置。
    private void monthCalendar1_DateSelected(object sender, DataRangeEventArgs e)
    {
       string areaHitted = System.Convert.ToString(
          monthCalendar1.HitTest(this.PointToClient(MonthCalendar.MousePosition)).HitArea);   if (areaHitted.Equals("Date"))   // 这里的Date是枚举类型(参考enum HitArea)
       {
          monthCalendar1.Hide();
       }
    }