我想知道您是否可以使用一个月的日历在Windows窗体上填充2个文本框。一个用于开始日期,一个用于结束日期。我可以弄清楚如何通过单击日历来填充两个文本框,但现在如何通过单击1填充开始日期,清除日历,然后使用第二个日历单击填充结束日期。
这是否可行,如果是这样,我将如何在C#窗体中实现这一目标?
答案 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()来保持文本框与日历迭代同步(上个月,下个月......)。