我想实现单击Button后弹出MonthCalendar,然后再MonthCalendar里选择时间,当单击时间后把选择的年月日显示在TextBox中,请问要如何实现?

解决方案 »

  1.   

    private void textBox1_MouseDown(object sender, MouseEventArgs e)
            {
                MonthCalendar ms = new MonthCalendar();
                this.Controls.Add(ms);
                ms.DateChanged += new DateRangeEventHandler(ms_DateChanged);
            }
    void ms_DateChanged(object sender, DateRangeEventArgs e)
            {
                this.textBox1.Text = e.Start.Date.ToString();
            }
      

  2.   


    我在百度查过,看过你这个不过我没用好我想弄个先点Button然后选择后在显示在TextBox里的,而不是直接用textBox的。请问要如何写呢?
      

  3.   

            void mc_DateChanged(object sender, DateRangeEventArgs e)
            {
                this.EnterDateBox.Text = e.Start.Date.ToString();
            }        
            private void button1_Click(object sender, EventArgs e)
            {            MonthCalendar ms = new MonthCalendar();
                this.Controls.Add(ms);
                ms.DateChanged += new DateRangeEventHandler(mc_DateChanged);
            }
    稍微改了下很好用谢谢,不过现在又出现了一个问题。MonthCalendar会显示在Button的下面,而且选中后MonthCalendar依然存在,请问如何让他消失和置顶呢?
      

  4.   

    別用這個很傻的控件了
    直接用這個
    用法都有詳細說明
    http://www.my97.net/dp/index.asp
      

  5.   

    我想弄明白这个控件,既然是VS自带的多少也要会一些吧……,现在的问题就是MonthCalendar被置于底端了。请问如何用代码的形式让MonthCalendar置于顶端呢?又要如何单击选择时间后关闭它呢?
      

  6.   


    这个到是不错,不过他是WEB的,请问有Winfrom的嘛?
      

  7.   

    我是这么做的
    1、放一个monthcalendar控件在对话框上,初始的时候hide
    2、响应editbox 的EN_SETFOCUS消息,在里面把calendar显示出来
    3、响应monthcalendar控件的MCN_SELECT消息,获取当前选择日期,把日期放到editbox中,接着隐藏monthcalendar控件。
    4、想要置顶,在响应MCN_SELECT消息时,调用SetWindowPos函数,设置HWND_TOPMOST,具体可搜下SetWindowPos函数
    但是我遇到这个问题:我的monthcalendar是放到几个Button上面的,即使置顶了,在monthcalendar中选择日期时如果点击到Button,还是会响应到Button的消息。