请假开始时间,结束时间两个textbox 需要两个Calendar控件吗?加载页面后不显示显示Calendar,点击textbox后显示Calendar,选择好时间后又隐藏Calendar,并把时间赋值个textbox的实现?谢谢!

解决方案 »

  1.   

            /// <summary>
            /// MonthCalendar时间选定,赋值给textbox
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void mc_DateSelected(object sender, DateRangeEventArgs e)
            {
                tbTime.Text = e.Start.ToString("yyyy-MM-dd");
            }
            /// <summary>
            /// textbox鼠标捕获事件,显示MonthCalendar
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void tbTime_MouseCaptureChanged(object sender, EventArgs e)
            {
                MonthCalendar mc = new MonthCalendar();
                mc.Location = new Point(label9.Location.X,label9.Location.Y+tbTime.Height*2);
                mc.Parent = this;
                mc.BringToFront();
                mc.MouseLeave += new EventHandler(mc_MouseLeave);
                mc.DateSelected += new DateRangeEventHandler(mc_DateSelected);
                mc.Show();
            }
            /// <summary>
            /// 鼠标离开MonthCalendar,关闭MonthCalendar
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
           private  void mc_MouseLeave(object sender, EventArgs e)
            {
                ((MonthCalendar)sender).Dispose();
            }
      

  2.   

    是web,还是form ?我之前用了个一个很笨的方法,但是没有做自定义控件,是form的。
    思路: 
    1。鼠标在textbox上移动事件,显示Calendar控件,当然要设置好Location和Size.以便看上去是同一个控件。
    2.鼠标在textbox上移开事件,不显示Calendar控件。
    3.双击Calendar的内容,则赋值给textbox