使用一个月日历填充2个文本框

时间:2014-08-14 01:23:02

标签: c# winforms monthcalendar

我想知道您是否可以使用一个月的日历在Windows窗体上填充2个文本框。一个用于开始日期,一个用于结束日期。我可以弄清楚如何通过单击日历来填充两个文本框,但现在如何通过单击1填充开始日期,清除日历,然后使用第二个日历单击填充结束日期。

这是否可行,如果是这样,我将如何在C#窗体中实现这一目标?

2 个答案:

答案 0 :(得分:1)

您可以处理“Date Selected”事件,如下所示:

    public Form1()
    {
        InitializeComponent();
        mthCalendarMaster.DateSelected += mthCalendarMaster_DateSelected;
    }

    private void mthCalendarMaster_DateSelected(object sender, DateRangeEventArgs e)
    {
        if (string.IsNullOrWhiteSpace(textBox1.Text))
            textBox1.Text = e.Start.ToShortDateString();
        else
            textBox2.Text = e.Start.ToShortDateString();
    }

注意:在表单的构造函数中定义事件处理程序并不是最好的主意。

答案 1 :(得分:0)

这将使2个文本框具有通过绑定源绑定的月份和结束日期的当前开始日期:

        BindingSource source = new BindingSource();
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            SetSource();
            textBox1.DataBindings.Add("Text", source, "Start", true);
            textBox2.DataBindings.Add("Text", source, "End", true);
        }

        private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
        {
            SetSource();
        }

        private void SetSource()
        {
            source.DataSource = monthCalendar1.GetDisplayRange(true);
        }
    }

我们在DateChanged处理程序中调用SetSource()来保持文本框与日历迭代同步(上个月,下个月......)。