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

本文关键字:日历 填充 2个 文本 一个 | 更新日期: 2023-09-27 18:18:07

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

这是可能的吗?如果是的话,我该如何在c# windows形式中实现这一点?

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

你可以像下面这样处理"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();
    }

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

这将使两个文本框的当前起始日期和结束日期都通过绑定源绑定:

        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);
        }
    }

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