如何在MonthCalendar的date_changed事件中关闭表单
本文关键字:事件 表单 changed MonthCalendar date | 更新日期: 2023-09-27 17:50:34
我实际上有两个问题。当用户单击箭头更改月份时,1。自动选择给定月份的。是否有可能防止这种行为,以便在用户单击实际日期时首先触发date_changed ?
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
{
this.Close();
}
}
我把我的MonthCalendar放在一个单独的表单中。当单击按钮时,将打开此表单,用户可以选择日期。在date_changed事件我想要窗体关闭,所以我做了this. close(),但这使应用程序崩溃,我得到一个ObjectDisposedException:
无法访问已处置的对象。对象名称:'MonthCalendar'
如何关闭表单?
编辑:public partial class Form1 : Form
{
Form2 frm2;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
frm2 = new Form2();
frm2.theForm = this;
frm2.Show();
}
public void closeAform()
{
frm2.Close();
}
}
public partial class Form2 : Form
{
public Form1 theForm { get; set; }
public Form2()
{
InitializeComponent();
}
private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
{
theForm.closeAform();
}
}
-
不,阻止这种行为是不可能的。当用户导航到一个新的月份时,这与更改日期是一样的。另一种行为没有多大意义:当选择一个新的月份时,必须选择该月中的某个天,而该月的第一天也是一个很好的候选。事实上,
DateChanged
事件的描述甚至解释了它:当由于用户选择或通过下一个月/前一个月导航而更改日期范围时发生。
您是否考虑过处理
DateSelected
事件?我怀疑这会更接近你想要的。它的描述说它:当用户选择一个日期或一组日期时发生。
-
就像魔法一样,当我处理
DateSelected
事件时,关闭表单工作得很好:public class DatePickerForm : Form { public DatePickerForm() { InitializeComponent(); } private void calendar_DateSelected(object sender, DateRangeEventArgs e) { this.Close(); } }